data.table
Eine Datentabelle anlegen
Suche…
Bemerkungen
Eine data.table ist eine erweiterte Version der data.frame-Klasse von Basis R. Das class()
-Attribut ist daher der Vektor "data.table" "data.frame"
Funktionen, die auch auf einem data.frame funktionieren, werden verwendet Arbeit mit einer Datentabelle. Es gibt viele Möglichkeiten, eine data.table zu erstellen, zu laden oder zu zwingen, wie hier zu sehen ist.
Erzwingen Sie einen Datenrahmen
Um ein data.frame als data.table zu kopieren, verwenden Sie as.data.table
oder 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)
Das ist selten notwendig. Eine Ausnahme ist die Verwendung von eingebauten Datensätzen wie mtcars
, die kopiert werden müssen, da sie nicht direkt geändert werden können.
Mit data.table () erstellen
Es gibt einen Konstruktor mit demselben Namen:
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
Im Gegensatz zu data.frame
data.table
Strings standardmäßig nicht zu Faktoren:
sapply(DT, class)
# x y z
# "character" "integer" "logical"
Mit fread einlesen ()
Wir können aus einer Textdatei lesen:
dt <- fread("my_file.csv")
Im read.csv
fread
liest fread
Strings als Strings und nicht standardmäßig als Faktoren.
Weitere Beispiele finden Sie im Thema [ fread
] [need_a_link].
Ändern Sie ein data.frame mit setDT ()
Aus Gründen der Effizienz bietet data.table eine Möglichkeit, ein data.frame oder eine Liste zu ändern, um eine data.table direkt zu machen:
# example data.frame
DF = data.frame(x = letters[1:5], y = 1:5, z = (1:5) > 3)
# modification
setDT(DF)
Beachten Sie, dass wir das Ergebnis nicht <-
zuweisen, da das Objekt DF
vor Ort geändert wurde.
Die Klassenattribute des data.frame bleiben erhalten:
sapply(DF, class)
# x y z
# "factor" "integer" "logical"
Kopieren Sie ein weiteres data.table mit copy ()
# example data
DT1 = data.table(x = letters[1:2], y = 1:2, z = (1:2) > 3)
Aufgrund der Art und Weise, wie data.tables bearbeitet werden, erstellt DT2 <- DT1
keine Kopie. Das heißt, spätere Änderungen an den Spalten oder anderen Attributen von DT2
wirken sich auch auf DT1
. Wenn Sie eine echte Kopie wünschen, verwenden Sie
DT2 = copy(DT1)
Um den Unterschied zu sehen, geschieht Folgendes ohne 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
Und mit einer 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
In letzterem Fall verbreiten sich die Änderungen also nicht.