尝试在R中联接多个数据框时出现问题

时间:2018-07-22 23:29:52

标签: r merge left-join missing-data cbind

我有三个数据帧:df1df2df3,它们具有相同的列数和行数,并且顺序相同。它们的列名完全相同,除了最后df的最后三列(42:43)(例如:col41df1,cold42df1,col43df1 ... col41df2,col42df2,col43df2 ... col41df3,col42df3,col43df3 ...)。

我想连接三个数据框,以便将每个特定的列添加到末尾,最后我得到一个包含49列而不是43列的数据框。 >

df_merged <- df1 %>%
left_join(df2)%>%
left_join(df3)

但是,在连接过程中出了点问题,因为df_merged似乎有6个NA值,而我加入的所有原始数据帧都没有。

请帮助?

谢谢!

1 个答案:

答案 0 :(得分:1)

由于在所有3个数据帧中行的顺序相同,因此无需使用联接。相反,只需从第二个和第三个数据框中获取所需的3列,然后将它们附加到第一个,如下所示:

df_merged <- cbind(df1, df2[, c(41:43)], df3[, c(42:43)])

这里是一个示例:

df1 <- data.frame(id=c(1,2,3), value=c(5,10,25))
df2 <- data.frame(id=c(1,2,3), value=c(3,6,9), morevalues=c(4,5,9))

library(dplyr)

merged_df <- data.frame(df1, df2[,c(2:3)])
merged_df