data.table
Tworzenie tabeli danych
Szukaj…
Uwagi
Data.table to ulepszona wersja klasy data.frame z bazy R. W związku z tym jej atrybutem class() jest wektor "data.table" "data.frame" a funkcje działające na data.frame również praca z tabelą danych. Istnieje wiele sposobów tworzenia, ładowania lub wymuszania tabeli danych.
Wymuś ramkę danych
Aby skopiować data.frame jako data.table, użyj as.data.table lub 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)
Jest to rzadko konieczne. Jedynym wyjątkiem jest użycie wbudowanych zestawów danych, takich jak mtcars , które należy skopiować, ponieważ nie można ich modyfikować w miejscu.
Kompilacja za pomocą data.table ()
Istnieje konstruktor o tej samej nazwie:
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
W przeciwieństwie do data.frame , data.table nie data.table ciągów znaków na czynniki:
sapply(DT, class)
# x y z
# "character" "integer" "logical"
Wczytaj za pomocą fread ()
Możemy odczytać z pliku tekstowego:
dt <- fread("my_file.csv")
W przeciwieństwie do read.csv , fread będzie odczytywał ciągi jako ciągi, a nie jako czynniki domyślnie.
Zobacz [temat dotyczący fread ] [need_a_link], aby uzyskać więcej przykładów.
Zmodyfikuj data.frame za pomocą setDT ()
Aby zwiększyć wydajność, data.table oferuje sposób zmiany ramki data.frame lub listy w celu utworzenia tabeli data.table w miejscu:
# example data.frame
DF = data.frame(x = letters[1:5], y = 1:5, z = (1:5) > 3)
# modification
setDT(DF)
Zauważ, że nie <- przypisujemy wyniku, ponieważ obiekt DF został zmodyfikowany w miejscu.
Atrybuty klasy data.frame zostaną zachowane:
sapply(DF, class)
# x y z
# "factor" "integer" "logical"
Skopiuj inny plik data.table za pomocą copy ()
# example data
DT1 = data.table(x = letters[1:2], y = 1:2, z = (1:2) > 3)
Ze względu na sposób manipulowania tabelami data.TT2 DT2 <- DT1 nie utworzy kopii. Oznacza to, że późniejsze modyfikacje kolumn lub innych atrybutów DT2 wpłyną również na DT1 . Jeśli chcesz prawdziwą kopię, użyj
DT2 = copy(DT1)
Aby zobaczyć różnicę, oto, co dzieje się bez kopii:
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
I z kopią:
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
Tak więc zmiany nie rozprzestrzeniają się w tym drugim przypadku.