【发布时间】:2017-05-27 19:52:39
【问题描述】:
我有一个数据框列表list1
df1 <- data.frame(ID = paste0(LETTERS[1],1:4), valueA = seq(0.1,0.4,0.1), Category= "Apples")
df2 <- data.frame(ID = paste0(LETTERS[1],3:6), valueB = seq(0.1,0.4,0.1), Category= "Apples")
df3 <- data.frame(ID = paste0(LETTERS[1],4:7), valueC = seq(0.1,0.4,0.1), Category= "Apples")
list1 <- list(df1,df2,df3)
list1
[[1]]
ID valueA Category
1 A1 0.1 Apples
2 A2 0.2 Apples
3 A3 0.3 Apples
4 A4 0.4 Apples
[[2]]
ID valueB Category
1 A3 0.1 Apples
2 A4 0.2 Apples
3 A5 0.3 Apples
4 A6 0.4 Apples
[[3]]
ID valueC Category
1 A4 0.1 Apples
2 A5 0.2 Apples
3 A6 0.3 Apples
4 A7 0.4 Apples
我想将 rbind 放在一起,但要匹配每个数据帧中的公共 ID 字段,以便它们出现在同一行中
期望的结果:
ID valueA Category valueB valueC
1 A1 0.1 Apples NA NA
2 A2 0.2 Apples NA NA
3 A3 0.3 Apples 0.1 NA
4 A4 0.4 Apples 0.2 0.1
7 A5 NA Apples 0.3 0.2
8 A6 NA Apples 0.4 0.4
12 A7 NA Apples NA 0.4
我尝试使用rbind.fill(list1),但每个数据框都合并为单独的行。也很高兴将其转化为所需的结果:
ID valueA Category valueB valueC
1 A1 0.1 Apples NA NA
2 A2 0.2 Apples NA NA
3 A3 0.3 Apples NA NA
4 A4 0.4 Apples NA NA
5 A3 NA Apples 0.1 NA
6 A4 NA Apples 0.2 NA
7 A5 NA Apples 0.3 NA
8 A6 NA Apples 0.4 NA
9 A4 NA Apples NA 0.1
10 A5 NA Apples NA 0.2
11 A6 NA Apples NA 0.3
12 A7 NA Apples NA 0.4
【问题讨论】: