如何在单个数据帧上使用rbind和cbind

时间:2016-11-28 11:13:38

标签: r dataframe rbind cbind

抱歉错误的问题框架。 我是一个新手,试图独自学习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 时出现错误,因为列名称不匹配,因为两个df的列号不同

当我试图将两个df分别绑定到单个数据帧 t 时,它包含了来自两个df的所有列 即

colnames(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

我如何获得上面提到的输出。

请建议我。

先谢谢 Mohan.V

1 个答案:

答案 0 :(得分:2)

看起来你需要使用合并。例如:

重新创建数据框:

t1_df<-as.data.frame(matrix(c(1,     "x",      "india",
                              2,     "y",       "usa"), ncol= 3, nrow =2, byrow= T)
                     )
names(t1_df) <- c("id","name","address")

t2_df<-as.data.frame(matrix(c(3,     "a",      "india",
4,     "b",       "usa"), ncol= 3, nrow =2, byrow= T))
names(t2_df) <- c("id","name","address")

添加msg变量。要使用合并,两个变量的名称略有不同(在您的情况下为t1_msg和t2_msg)

t1_df$t1_msg <- c("hi","hello")
t2_df$t2_msg <- c("go","bye")

然后使用merge来合并数据帧。设置all = TRUE将追加在其他数据帧中没有完全匹配的行。

merge(t1_df,t2_df,all = TRUE)

结果数据框如下所示:

  id name address t1_msg t2_msg
1  1    x   india     hi   <NA>
2  2    y     usa  hello   <NA>
3  3    a   india   <NA>     go
4  4    b     usa   <NA>    bye