R에서 rbindlist를 사용하여 여러 테이블에서 데이터 테이블을 만드는 방법


R의 rbindlist() 함수는 많은 data.table 또는 data.frame 개체 목록에서 data.table을 만드는 데 사용할 수 있습니다.

이 함수는 다음 기본 구문을 사용합니다.

 rbindlist(l, use. names ="check", fill= FALSE , idcol= NULL )

금:

  • l : data.table, data.frame 또는 목록 개체를 포함하는 목록입니다.
  • use.names : TRUE는 열 이름으로 바인딩됩니다. FALSE는 위치별로 바인딩됩니다.
  • fill : TRUE는 누락된 값을 NA로 채웁니다.
  • idcol : 해당 행이 어떤 목록 항목에서 왔는지 나타내는 열을 만듭니다.

다음 예에서는 이 기능을 실제로 사용하는 방법을 보여줍니다.

예: rbindlist를 사용하여 데이터 테이블 생성

R에 다음과 같은 data.table 및 data.frame 개체 목록이 있다고 가정합니다.

 library (data.table)

#create data frames and data tables
data1 <- data. table (team=c('A', 'B', 'C'),
                    dots=c(22, 27, 38))

data2 <- data. table (team=c('D', 'E', 'F'),
                    dots=c(22, 14, 20))

data3 <- data. frame (team=c('G', 'H', 'I'),
                    dots=c(11, 15, 18))

#view data frames and data tables
print (data1)
print (data2)
print (data3)

   team points
1: At 22
2:B27
3: C 38
   team points
1:D22
2:E14
3:F20
  team points
1 G 11
2:15 a.m.
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: At 22
2:B27
3: C 38
4:D22
5:E14
6:F20
7:G 11
8:15 a.m.
9: I 18

결과는 우리가 제공한 객체 목록의 행으로 구성된 9개의 행이 있는 data.table 객체입니다.

또한 class() 함수를 사용하여 결과가 실제로 data.table 객체인지 확인할 수도 있습니다.

 #view class of resulting object
class(big_data)

[1] "data.table" "data.frame"

결과는 실제로 data.table 객체임을 알 수 있습니다.

rbindlist 사용의 장점

rbindlist를 사용하는 대안은 기본 R의 rbind 함수와 함께 do.call을 사용하는 것입니다.

 #use rbind to bind together list of objects
do. call (" rbind ", data_list)

   team points
1: At 22
2:B27
3: C 38
4:D22
5:E14
6:F20
7:G 11
8:15 a.m.
9: I 18

이 코드는 동일한 결과를 생성하지만 특히 매우 큰 data.table 또는 data.frame 객체의 경우 rbindlist 가 훨씬 더 빠른 것으로 나타났습니다.

추가 리소스

다음 튜토리얼에서는 R에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.

R에서 테이블을 데이터 프레임으로 변환하는 방법
R의 데이터 프레임에 행을 추가하는 방법
R에서 데이터 프레임을 분할하는 방법

의견을 추가하다

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