data.table
Создание таблицы данных.
Поиск…
замечания
Data.table - это расширенная версия класса data.frame из базы R. Таким образом, атрибут class()
представляет собой вектор "data.table" "data.frame"
а функции, которые работают с data.frame, также будут работа с таблицей данных. Существует множество способов создания, загрузки или принуждения к таблице data.table, как показано здесь.
Принудительное использование data.frame
Чтобы скопировать файл data.frame в таблицу data.table, используйте as.data.table
или 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)
Это редко необходимо. Исключением является использование встроенных наборов данных, таких как mtcars
, которые необходимо скопировать, поскольку они не могут быть изменены на месте.
Построить с помощью data.table ()
Существует одноименный конструктор:
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
В отличие от data.frame
, data.table
по умолчанию не будет принуждать строки к факторам:
sapply(DT, class)
# x y z
# "character" "integer" "logical"
Чтение с помощью fread ()
Мы можем читать из текстового файла:
dt <- fread("my_file.csv")
В отличие от read.csv
, fread
будет читать строки как строки, а не как факторы по умолчанию.
Дополнительную информацию см. В разделе [topic on fread
] [need_a_link].
Измените файл data.frame с помощью setDT ()
Для эффективности, data.table предлагает способ изменения data.frame или списка, чтобы сделать data.table на месте:
# example data.frame
DF = data.frame(x = letters[1:5], y = 1:5, z = (1:5) > 3)
# modification
setDT(DF)
Обратите внимание, что мы не <-
присваиваем результат, так как объект DF
был изменен на месте.
Атрибуты класса data.frame будут сохранены:
sapply(DF, class)
# x y z
# "factor" "integer" "logical"
Скопируйте другую таблицу данных с копией ()
# example data
DT1 = data.table(x = letters[1:2], y = 1:2, z = (1:2) > 3)
Из-за того, как манипулируют data.tables, DT2 <- DT1
не будет делать копию. То есть последующие изменения столбцов или других атрибутов DT2
также повлияют на DT1
. Когда вам нужна реальная копия, используйте
DT2 = copy(DT1)
Чтобы увидеть разницу, вот что происходит без копии:
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
И с копией:
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
Таким образом, изменения не распространяются в последнем случае.