【发布时间】:2016-11-28 11:13:38
【问题描述】:
对于错误的问题框架,我们深表歉意。 我是新手,想自学R。
我有这样一个场景,
t1_df
id name address
1 x india
2 y usa
t2_df
id name address
3 a india
4 b usa
现在我尝试使用 data.frame 添加额外的列“msg” 即
t1_df <- data.frame(t1_df,msg)
t2_df <- data.frame(t2_df,msg)
t1_df
id name address msg
1 x india hi
2 y usa hello
t2_df
id name address msg
3 a india go
4 b usa bye
当我尝试执行 rbind 时,它会给出错误,因为 col 名称不匹配,因为两个 df 具有不同的 col 名称
当我尝试将两个 df 的 cbind 合并到单个数据帧中时 t,它包含来自两个 df 的所有列 即
列名(t)
id name address t1_msg id name address t2_msg
但我想将数据框设为
id name address t1_msg t2_msg
1 x india hi NA
2 y usa hello NA
3 a india NA go
4 b usa NA bye
我怎样才能得到上面提到的输出。
请给我建议。
提前致谢 莫汉.V
【问题讨论】:
-
根据显示的示例数据,列名是匹配的。列名中是否有任何前导/滞后空格。使用
data.table中的rbindlist,即rbindlist(list(t1_df, t2_df)) -
感谢 akrun 的回复,我尝试了您的建议,但它只给了我来自 t1_df 的 t1_msg,正如我所提到的,我需要在单个数据框中获取 2 个 diff 列作为 t1_msg 和 t2_msg的
-
然后,将列名更改为
t1_msg和t2_msg,并使用dplyr中的bind_rows,即names(t1_df)[4] <- "t1_msg"; names(t2_df)[4] <- "t2_msg"; bind_rows(t1_df, t2_df)