programing

많은 data.frame 병합

stoneblock 2023. 10. 11. 20:26

많은 data.frame 병합

중복 가능:
목록의 여러 데이터 프레임을 동시에 병합

data.frames:

 df1 = data.frame(id=c('1','73','2','10','43'),v1=c(1,2,3,4,5)) <br>
 df2 = data.frame(id=c('7','23','57','2','62','96'),v2=c(1,2,3,4,5,6)) <br>
 df3 = data.frame(id=c('23','62'),v3=c(1,2)) <br>

참고:id각 data.frame마다 고유합니다.결과 행렬이 다음과 같이 생겼으면 합니다.

1      1 NA NA 
2      3  4 NA 
7      NA 1 NA 
10     4 NA NA 
23     NA 2  1 
43     5 NA NA 
57     NA 3 NA 
62     NA 5  2 
73     2 NA NA 
96     NA 6 NA

이 경우 3개의 데이터셋만 보여주고, 실제로는 그 중 적어도 22개의 데이터셋을 가지고 있기 때문에 마지막에는 nx(22+1)의 행렬을 원합니다. 여기서 n은 모든 22개 데이터셋의 id 수입니다.

2개의 데이터셋이 주어지면, 그 데이터셋을 가져와야 합니다.ids첫번째 열과 두번째 열과 세번째 열은 값으로 채워집니다. 만약 값이 존재하지 않는다면 입력합니다.NA대신.

그것들을 A에 넣습니다.list사용.merge와 함께Reduce

Reduce(function(x, y) merge(x, y, all=TRUE), list(df1, df2, df3))
#    id v1 v2 v3
# 1   1  1 NA NA
# 2  10  4 NA NA
# 3   2  3  4 NA
# 4  43  5 NA NA
# 5  73  2 NA NA
# 6  23 NA  2  1
# 7  57 NA  3 NA
# 8  62 NA  5  2
# 9   7 NA  1 NA
# 10 96 NA  6 NA

보다 간결한 버전을 사용할 수도 있습니다.

Reduce(function(...) merge(..., all=TRUE), list(df1, df2, df3))

언급URL : https://stackoverflow.com/questions/14096814/merging-a-lot-of-data-frames