根据列名在R中附加数据帧

时间:2018-05-14 15:51:24

标签: r dataframe

我对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

这甚至可能吗?

3 个答案:

答案 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.callrbind.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中的所有内容。

希望对你有用。