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.