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 abcde
2 fghij

이 예에서 sapply는 목록을 행렬로 변환한 다음 data.frame은 행렬을 데이터 프레임으로 변환합니다. 최종 결과는 2행, 5열 데이터 프레임입니다.

방법 2: 데이터테이블

다음 코드 조각은 data.table 라이브러리의 rbindlist 함수를 사용하여 두 개의 중첩 목록 목록을 두 개의 행과 세 개의 열이 있는 데이터 프레임으로 변환하는 방법을 보여줍니다.

 #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

그러면 2개의 행과 3개의 열이 있는 데이터 테이블이 생성됩니다. 이 데이터 테이블을 데이터 프레임으로 변환하려면 as.data.frame(DT) 을 사용하면 됩니다.

이 방법은 매우 큰 데이터 세트로 작업하는 경우 이전 방법보다 빠르게 목록을 데이터 프레임으로 변환합니다.

방법 3: Dplyr

다음 코드 조각은 dplyr 라이브러리의 바인딩_rows 함수를 사용하여 두 개의 중첩 목록 목록을 두 개의 행과 세 개의 열이 있는 데이터 프레임으로 변환하는 방법을 보여줍니다.

 #loadlibrary
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

결과적으로 2개의 행과 3개의 열이 있는 데이터 프레임이 생성됩니다.

또한 이 방법은 대규모 데이터 세트로 작업할 때 기본 R보다 빠르게 수행되는 경향이 있습니다.

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다