Функцию rbindlist() в R можно использовать для создания одной таблицы данных из списка множества объектов data.table или data.frame.
Эта функция использует следующий базовый синтаксис:
rbindlist(l, use. names ="check", fill= FALSE , idcol= NULL )
куда:
- l : Список, содержащий объекты data.table, data.frame или списка.
- use.names : TRUE привязывается по именам столбцов. FALSE связывает по положению.
- fill : TRUE заполняет отсутствующие значения NA.
- idcol : создает столбцы, показывающие, из какого элемента списка взяты эти строки.
В следующем примере показано, как использовать эту функцию на практике.
Пример: использование rbindlist для создания одной таблицы данных
Предположим, у нас есть следующий список объектов data.table и data.frame в R:
library (data.table)
#create data frames and data tables
data1 <- data. table (team=c('A', 'B', 'C'),
points=c(22, 27, 38))
data2 <- data. table (team=c('D', 'E', 'F'),
points=c(22, 14, 20))
data3 <- data.frame(team=c('G', 'H', 'I'),
points=c(11, 15, 18))
#view data frames and data tables
print(data1)
print(data2)
print(data3)
team points
1: A 22
2: B 27
3: C 38
team points
1: D 22
2: E 14
3: F 20
team points
1 G 11
2 H 15
3 I 18
Мы можем использовать следующую функцию rbindlist() , чтобы связать вместе список объектов data.table и data.frame в одну data.table:
#define list of objects to bind together
data_list <- list(data1, data2, data3)
#bind together list of objects
big_data <- rbindlist(data_list)
#view result
big_data
team points
1: A 22
2: B 27
3: C 38
4: D 22
5: E 14
6: F 20
7: G 11
8: H 15
9: I 18
Результатом является объект data.table с девятью строками, состоящими из строк из предоставленного нами списка объектов.
Мы также можем использовать функцию class() , чтобы убедиться, что результат действительно является объектом data.table:
#view class of resulting object
class(big_data)
[1] "data.table" "data.frame"
Мы видим, что результатом действительно является объект data.table.
Преимущество использования rbindlist
Альтернативой использованию rbindlist может быть использование do.call с функцией rbind в базе R:
#use rbind to bind together list of objects
do. call (" rbind", data_list)
team points
1: A 22
2: B 27
3: C 38
4: D 22
5: E 14
6: F 20
7: G 11
8: H 15
9: I 18
Этот код дает тот же результат, но оказывается, что rbindlist работает значительно быстрее, особенно для очень больших объектов data.table или data.frame.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в R:
Как преобразовать таблицу во фрейм данных в R
Как добавить строки во фрейм данных в R
Как разделить фрейм данных в R