我对R比较新,所以请耐心等待。我有一个数据帧列表,我需要将它组合成一个数据帧。这样:
dfList <- list(
df1 = data.frame(x=letters[1:2],y=1:2),
df2 = data.frame(x=letters[3:4],z=3:4)
)
出现:
$df1
x y
1 a 1
2 b 2
$df2
x z
1 c 3
2 d 4
我想让他们组合常见列并添加任何尚未存在的列。结果将是:
final result
x y z
1 a 1
2 b 2
3 c 3
4 d 4
这甚至可能吗?
答案 0 :(得分:4)
是的,实际上很简单:
library(dplyr)
df_merged <- bind_rows(dfList)
df_merged
x y z
1 a 1 NA
2 b 2 NA
3 c NA 3
4 d NA 4
如果你不想在空单元格中NA
,你可以像这样替换它们:
df_merged[is.na(df_merged)] <- 0 # or whatever you want to replace NA with
答案 1 :(得分:4)
只需将do.call
与rbind.fill
do.call(rbind.fill,dfList)
x y z
1 a 1 NA
2 b 2 NA
3 c NA 3
4 d NA 4
答案 2 :(得分:1)
您可以使用base
函数merge()
执行此操作:
merge(dfList$df1, dfList$df2, by = "x", all = TRUE)
# x y z
# 1 a 1 NA
# 2 b 2 NA
# 3 c NA 3
# 4 d NA 4
或dplyr
包含函数full_join
:
dplyr::full_join(dfList$df1, dfList$df2, by = "x")
# x y z
# 1 a 1 NA
# 2 b 2 NA
# 3 c NA 3
# 4 d NA 4
它们都加入了两个data.frames中的所有内容。
希望对你有用。