Как использовать rbindlist в R для создания одной таблицы данных из многих


Функцию 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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.