前言

通常我们用rbind和cbind合并相同行列的数据框。当两个数据框具有不同行列数目时,直接用会报错。

> df1 <- data.frame(a = c(1:5), c = c(6:10));df1
a c
1 1 6
2 2 7
3 3 8
4 4 9
5 5 10
> df2 <- data.frame(a = c(11:15), b = c(16:20));df2
a b
1 11 16
2 12 17
3 13 18
4 14 19
5 15 20
> rbind(df1,df2)
Error in match.names(clabs, names(xi)) : 名字同原来已有的名字不相对

rbind/cbind对于行列名称一定要相同,顺序可不同,例如:

> df1 <- data.frame(b = c(1:5), a = c(6:10));df1
b a
1 1 6
2 2 7
3 3 8
4 4 9
5 5 10
> df2 <- data.frame(a = c(11:15), b = c(16:20));df2
a b
1 11 16
2 12 17
3 13 18
4 14 19
5 15 20
> rbind(df1,df2)
b a
1 1 6
2 2 7
3 3 8
4 4 9
5 5 10
6 16 11
7 17 12
8 18 13
9 19 14
10 20 15

那么怎么强行合并,即相同部分合并,不同部分用NA取代?

方法一:dplyr的bind_rows

> df1 <- data.frame(b = c(1:5), a = c(6:10));df1
b a
1 1 6
2 2 7
3 3 8
4 4 9
5 5 10
> df2 <- data.frame(a = c(11:15), b = c(16:20), c = LETTERS[1:5]);df2
a b c
1 11 16 A
2 12 17 B
3 13 18 C
4 14 19 D
5 15 20 E
> dplyr::bind_rows(df1, df2)
b a c
1 1 6 <NA>
2 2 7 <NA>
3 3 8 <NA>
4 4 9 <NA>
5 5 10 <NA>
6 16 11 A
7 17 12 B
8 18 13 C
9 19 14 D
10 20 15 E

方法二:plyr的rbind.fill

> plyr::rbind.fill(df1,df2)
b a c
1 1 6 <NA>
2 2 7 <NA>
3 3 8 <NA>
4 4 9 <NA>
5 5 10 <NA>
6 16 11 A
7 17 12 B
8 18 13 C
9 19 14 D
10 20 15 E

可以看到,行列名可以不同,顺序和rbind一样,无关紧要。但最好还是相同顺序吧。

https://stackoverflow.com/questions/3402371/combine-two-data-frames-by-rows-rbind-when-they-have-different-sets-of-columns

最新文章

  1. 常见的高可用MySQL解决方案
  2. axure设置变量值
  3. jQuery尺寸算法
  4. idea使用maven启动tomcat
  5. 基于int的Linux的经典系统调用实现
  6. Oracle绑定变量
  7. 【BZOJ 1491】 [NOI2007]社交网络
  8. Filter 解决web网页跳转乱码
  9. jq-toggle
  10. hdu 5635 LCP Array(BC第一题)
  11. Java关键字之this
  12. wave音频格式一窥
  13. 把list集合的内容写入到Xml中,通过XmlDocument方式写入Xml文件中
  14. 利用BLKTRACE分析IO性能
  15. CURL 调用登录接口并且携带Token
  16. PhoneUtil
  17. Logback配置讲解
  18. python---websocket的使用
  19. keypress 、keydown、keyup后触发回车
  20. 实现Callable接口创建线程

热门文章

  1. JVM:体系结构
  2. 【二食堂】Beta - 事后分析
  3. [Beta]the Agiles Scrum Meeting 12
  4. Beta阶段第二次会议
  5. dwr简单应用及一个反向ajax消息推送
  6. stm32看门狗详细解答,看了觉得一下子明白了很多
  7. Spring源码解读(二):Spring AOP
  8. linux下软链接文件的拷贝
  9. hdu 5018 Revenge of GCD
  10. WLAN-无线路由综合应用