我有三个数据帧:df1
,df2
,df3
,它们具有相同的列数和行数,并且顺序相同。它们的列名完全相同,除了最后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值,而我加入的所有原始数据帧都没有。
请帮助?
谢谢!
答案 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