Zoeken…


Opmerkingen

Een data.table is een verbeterde versie van de data.frame-klasse van base R. Als zodanig is het kenmerk class() de vector "data.table" "data.frame" en functies die op een data.frame werken, zullen ook werken met een data.table. Er zijn veel manieren om een data.table te maken, laden of dwingen, zoals hier te zien.

Coerce een data.frame

Gebruik as.data.table of data.table om een data.frame te kopiëren als data.table :

DF = data.frame(x = letters[1:5], y = 1:5, z = (1:5) > 3)

DT <- as.data.table(DF)
# or
DT <- data.table(DF)

Dit is zelden nodig. Een uitzondering is het gebruik van ingebouwde gegevenssets zoals mtcars , die moeten worden gekopieerd, omdat ze niet ter mtcars kunnen worden gewijzigd.

Bouwen met data.table ()

Er is een constructor met dezelfde naam:

DT <- data.table(
  x = letters[1:5], 
  y = 1:5, 
  z = (1:5) > 3
)
#    x y     z
# 1: a 1 FALSE
# 2: b 2 FALSE
# 3: c 3 FALSE
# 4: d 4  TRUE
# 5: e 5  TRUE

In tegenstelling tot data.frame , zal data.frame data.table geen tekenreeksen naar factoren dwingen:

sapply(DT, class)
#               x           y           z 
#     "character"   "integer"   "logical" 

Inlezen met fread ()

We kunnen lezen uit een tekstbestand:

dt <- fread("my_file.csv")

In tegenstelling tot read.csv leest fread strings als strings, niet standaard als factoren.

Zie het [topic on fread ] [need_a_link] voor meer voorbeelden.

Wijzig een data.frame met setDT ()

Voor efficiëntie biedt data.table een manier om een data.frame of lijst te wijzigen om een data.table op zijn plaats te krijgen:

# example data.frame
DF = data.frame(x = letters[1:5], y = 1:5, z = (1:5) > 3)

# modification
setDT(DF)

Merk op dat we niet <- het resultaat toewijzen, omdat het object DF is gewijzigd.

De klassenattributen van het data.frame blijven behouden:

sapply(DF, class)
#         x         y         z 
#  "factor" "integer" "logical" 

Kopieer een andere data.table met copy ()

# example data
DT1 = data.table(x = letters[1:2], y = 1:2, z = (1:2) > 3)

Vanwege de manier waarop data.tables worden gemanipuleerd, maakt DT2 <- DT1 geen kopie. Dat wil zeggen dat latere wijzigingen in de kolommen of andere kenmerken van DT2 ook van invloed zijn op DT1 . Gebruik als u een echt exemplaar wilt

DT2 = copy(DT1)

Om het verschil te zien, hier is wat er gebeurt zonder een kopie:

DT2 <- DT1
DT2[, w := 1:2]

DT1
#    x y     z w
# 1: a 1 FALSE 1
# 2: b 2 FALSE 2
DT2
#    x y     z w
# 1: a 1 FALSE 1
# 2: b 2 FALSE 2

En met een kopie:

DT2 <- copy(DT1)
DT2[, w := 1:2]

DT1
#    x y     z
# 1: a 1 FALSE
# 2: b 2 FALSE
DT2
#    x y     z w
# 1: a 1 FALSE 1
# 2: b 2 FALSE 2

De wijzigingen worden dus niet doorgegeven in het laatste geval.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow