Как преобразовать список во фрейм данных в R


Во многих случаях вам может понадобиться преобразовать список во фрейм данных в R. В этом руководстве объясняются три различных способа сделать это.

Метод 1: База R

В следующем фрагменте кода показано, как преобразовать список во фрейм данных, используя только базу R:

#create list
my_list <- list(letters[1:5], letters[6:10])
my_list

[[1]]
[1] "a" "b" "c" "d" "e"

[[2]]
[1] "f" "g" "h" "i" "j"

#convert list to data frame
data.frame(t(sapply(my_list,c)))

 X1 X2 X3 X4 X5
1 a b c d e
2 f g h i j

В этом примере sapply преобразует список в матрицу, затем data.frame преобразует матрицу во фрейм данных. Конечным результатом является фрейм данных из двух строк и пяти столбцов.

Метод 2: Таблица данных

В следующем фрагменте кода показано, как преобразовать список из двух вложенных списков во фрейм данных с двумя строками и тремя столбцами с помощью функции rbindlist из библиотеки data.table :

#load data.table library
library(data.table)

#create list
my_list <- list(a = list(var1 = 1, var2 = 2, var3 = 3),
 b = list(var1 = 4, var2 = 5, var3 = 6))
my_list 

$a
$a$var1
[1] 1

$a$var2
[1] 2

$a$var3
[1] 3

$b
$b$var1
[1] 4

$b$var2
[1] 5

$b$var3
[1] 6

#convert list to data frame
rbindlist(my_list)

 var1 var2 var3
1: 1 2 3
2: 4 5 6

В результате получается таблица данных с двумя строками и тремя столбцами. Если вы хотите преобразовать эту таблицу данных во фрейм данных, вы можете просто использовать as.data.frame(DT) .

Этот метод преобразует список во фрейм данных быстрее, чем предыдущий метод, если вы работаете с очень большим набором данных.

Способ 3: Дплыр

В следующем фрагменте кода показано, как преобразовать список из двух вложенных списков во фрейм данных с двумя строками и тремя столбцами с помощью функции bind_rows из библиотеки dplyr :

#load library
library(dplyr)

#create list
my_list <- list(a = list(var1 = 1, var2 = 2, var3 = 3),
 b = list(var1 = 4, var2 = 5, var3 = 6))

my_list

$a
$a$var1
[1] 1

$a$var2
[1] 2

$a$var3
[1] 3


$b
$b$var1
[1] 4

$b$var2
[1] 5

$b$var3
[1] 6

#convert list to data frame
bind_rows(my_list)

# A tibble: 2 x 3
 var1 var2 var3

1 1 2 3
2 4 5 6

В результате получается фрейм данных с двумя строками и тремя столбцами.

Этот метод также имеет тенденцию работать быстрее, чем базовый R, когда вы работаете с большими наборами данных.

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