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.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow