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보다 빠르게 수행되는 경향이 있습니다.