【R】行或列数目不同的两个数据框如何用rbind/cbind合并?
前言
通常我们用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一样,无关紧要。但最好还是相同顺序吧。
【R】行或列数目不同的两个数据框如何用rbind/cbind合并?的更多相关文章
- R语言中如何找出在两个数据框中完全相同的行(How to find common rows between two dataframe in R?)
I would like to make a new data frame which only includes common rows of two separate data.frame. ex ...
- 将HTML表格的每行每列转为数组,采集表格数据
将HTML表格的每行每列转为数组,采集表格数据 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 //将HTML ...
- Python pandas merge不能根据列名合并两个数据框(Key Error)?
目录 折腾 解决方法 折腾 数据分析用惯了R,感觉pandas用起来就有点反人类了.今天用python的pandas处理数据时两个数据框硬是合并不起来. 我有两个数据框,列名是未知的,只能知道索引,以 ...
- SQL行转列 (及EAV模型获取数据)
参考文章: http://www.williamsang.com/archives/1508.html 情景简介 学校里面记录成绩,每个人的选课不一样,而且以后会添加课程,所以不需要把所有课程当作列. ...
- R语言基础:数组&列表&向量&矩阵&因子&数据框
R语言基础:数组和列表 数组(array) 一维数据是向量,二维数据是矩阵,数组是向量和矩阵的直接推广,是由三维或三维以上的数据构成的. 数组函数是array(),语法是:array(dadta, d ...
- R学习笔记 第三篇:数据框
数据框(data.frame)用于存储二维表(即关系表)的数据,每一列存储的数据类型必须相同,不同的数据列的数据类型可以相同,也可以不同,但是,每列的长度必须相同.数据框的每列可以有唯一的命名,在已创 ...
- R语言学习 第三篇:数据框
数据框(data.frame)是最常用的数据结构,用于存储二维表(即关系表)的数据,每一列存储的数据类型必须相同,不同数据列的数据类型可以相同,也可以不同,但是每列的行数(长度)必须相同.数据框的每列 ...
- (数据科学学习手札07)R在数据框操作上方法的总结(初级篇)
上篇我们了解了Python中pandas内封装的关于数据框的常用操作方法,而作为专为数据科学而生的一门语言,R在数据框的操作上则更为丰富精彩,本篇就R处理数据框的常用方法进行总结: 1.数据框的生成 ...
- sql server 行转列解决方案
主要应用case语句来解决行转列的问题 行转列问题主要分为两类 1)简单的行转列问题: 示例表: id sid course result 1 2005001 语文 ...
随机推荐
- Java:volatile笔记
Java:volatile笔记 本笔记是根据bilibili上 尚硅谷 的课程 Java大厂面试题第二季 而做的笔记 1. volatile 和 JMM 内存模型的可见性 JUC 下的三个包 java ...
- OO第四单元UML作业总结暨OO课程总结
目录 目录一.第四单元UML两次作业架构设计第一次作业第二次作业二.架构设计总结与OO方法理解演进三.测试理解与实践演进四.课程收获总结五.课程改进建议六.尾声 一.第四单元UML两次作业架构设计 第 ...
- Noip模拟30 2021.8.4
T1 毛一琛 考场上打的稳定的$O((2^n)^2)$的暴力.其实再回忆一下上次那道用二进制枚举的题$y$ 就可以知道一样的道理,使用$\textit{Meet In the Middle}$, 按照 ...
- Windows平台编译器相关的几个预定义宏
WIN32 是在windows.h 中定义的宏,包含winodws.h则定义该宏 _WIN32/_WIN64跟windows平台有关的宏,_WIN32在windows 32位和64位下都有该宏,_ ...
- amba web
arm amba doc https://developer.arm.com/docs
- MVC之三个单选按钮的切换选择
实现需求: 1.三个多选按钮中:只能同时选择限时抢购和分享金或者拼团特惠和分享金,其中限时抢购和拼团特惠不能同时选择.并且点击后显示,再次点击赢隐藏. 1 @*活动信息*@ 2 <div> ...
- Qt char * 转QString
1.QString转char * 先将QString转换为QByteArray,再将QByteArray转换为char *. 注意:不能用char *mm = str.toLatin1().data( ...
- Get_init_color_map
#!/bin/bash./simulate_screencap.sh./analysis_screencap.py
- MongoDB 集群 config server 查询超时导致 mongos 集群写入失败
环境 OS:CentOS 7.x DB:MongoDB 3.6.12 集群模式:mongod-shard1 *3 + mongod-shard2 *3 + mongod-conf-shard *3 + ...
- 如何将声学的spectrogram(声谱图)重新反变换成时域语音信号
最近在研究一些信号分析的事情,感兴趣如何将频谱信号反变换成时域信号.fft 与ifft可以顺畅的转变,但是这个是一帧信号,当时间较长的信号再一起是,通过反变换变成一帧一帧的时域信号,如何把他们拼接起来 ...