R实现一次性合并多个数据框
数据处理中经常会有这样的情况,需要合并多个数据(按行或者按列合并),常规的merge或者rbind只能两个两个合并,操作繁琐。可以使用自写函数或do.call()函数进行数据库的拼接或合并,具体操作如下:
按列合并
mypath<-"C:/Users/18896/Desktop/example1"multmerge = function(mypath){filenames=list.files(path=mypath, pattern = ".XPT",full.names=TRUE)datalist = lapply(filenames, function(x){read.xport(file=x)})Reduce(function(x,y) {merge(x,y,by="SEQN",all=T)}, datalist)
}mergedata<-multmerge(mypath)
mypath中为需要合并的所有文件夹的本地目录,定义函数multmerge,先列出需要合并的数据库名称,并读取为list,使用merge函数合并list中的数据框。最后生成的mergedata为合并之后的data
文件夹不在本地时
data1 <- data.frame(id = 1:6, # Create first example data framex1 = c(5, 1, 4, 9, 1, 2),x2 = c("A", "Y", "G", "F", "G", "Y"))data2 <- data.frame(id = 4:9, # Create second example data framey1 = c(3, 3, 4, 1, 2, 9),y2 = c("a", "x", "a", "x", "a", "x"))data3 <- data.frame(id = 5:6, # Create third example data framez1 = c(3, 2),z2 = c("K", "b"))data_list <- list(data1, data2, data3)my_merge <- function(df1, df2){ # Create own merging functionmerge(df1, df2, by = "id")
}Reduce(my_merge, data_list) #id x1 x2 y1 y2 z1 z2
#1 5 1 G 3 x 3 K
#2 6 2 Y 4 a 2 b
或者使用tidyverse包
install.packages("tidyverse") # Install tidyverse package
library("tidyverse")
data_list %>% reduce(inner_join, by = "id") # Apply reduce function of tidyverse#id x1 x2 y1 y2 z1 z2
#1 5 1 G 3 x 3 K
#2 6 2 Y 4 a 2 b
按行合并
library(data.table)
DT1 = data.table(A=1:3,B=letters[1:3])
DT2 = data.table(B=letters[4:5],A=4:5)
DT3=data.table(A=6:7,B=letters[6:7])
l = list(DT1,DT2,DT3)
rbindlist(l, use.names=TRUE)
#A B
#1: 1 a
#2: 2 b
#3: 3 c
#4: 4 d
#5: 5 e
#6: 6 f
#7: 7 g
重复合并某个数据框多次
do.call("rbind", replicate(4, DT1, simplify = FALSE))# A B
# 1: 1 a
# 2: 2 b
# 3: 3 c
# 4: 1 a
# 5: 2 b
# 6: 3 c
# 7: 1 a
# 8: 2 b
# 9: 3 c
#10: 1 a
#11: 2 b
#12: 3 c
Reference:R Merge Multiple Data Frames in List (2 Examples) | Base R vs. tidyverse (statisticsglobe.com)
R实现一次性合并多个数据框相关推荐
- 求问R语言 分层抽样 合并两个数据框为什么出现了空集
求问R语言 分层抽样 合并两个数据框为什么出现了空集 rbind计算不了 #分层抽样 mydata <- read.csv("dat.csv") #simsample 简单随 ...
- python合并两个数据框_python-3.x - 如何使用匹配索引合并两个数据框? - SO中文参考 - www.soinside.com...
因此,我有两个DataFrame:Historic和Applet.历史记录包含我学校过去提供的所有课程的列表,而Applet是我学校目前提供的所有课程的列表 我想合并两个数据框,以便添加我的Apple ...
- python合并两个数据框_python 学习的第五天 数据框合并
1.根据共有的特性进行合并 import pandas; from pandas import read_csv; items = read_csv( "D://PA//4.12//data ...
- 【R语言】按照列名筛选数据框
[R语言]按照列名筛选数据框 先定义一个简单的数据框 a<-c("a","b","c","d") b<-c( ...
- r语言用行名称提取数据框信息显示na_学会这些R语言技巧至少可以节省半年时间...
ubuntu备忘定期清空回收站 扩增子数据牢记 r ubuntu 相关技巧和备忘待解决问题1:phyloseq有一篇文章案例使用输入和输出文件相同的文件名,无法执行 待解决问题2: 待解决问题3:样品 ...
- R语言的四种数据结构---数据框
数据框是最常见的数据结构,一般来讲,从csv或txt文件读入时就会自动存储为数据框对象. 与矩阵不同的是,矩阵只可以存储一种数据类型,而数据框可以存储多种类型,但是每一列必须为相同的数据类型 1.创建 ...
- python合并两个数据框_使用python合并两个数据框
我有两个数据框:dfDepas和df7: dfDepas.info() Int64Index: 7 entries, 0 to 6 Data columns (total 4 columns): da ...
- r语言用行名称提取数据框信息显示na_R语言-05数据框创建,以及按条件取数据框数据...
创建数据框 数据框是R语言的一种基础数据格式,通常excel等表格形式数据读入后都是数据框格式. 下例创建了一个3列5行的数据框,列的名字分别是site.season.pH my.dataset si ...
- python两个数据框合并_关于python 2.7:python2 pandas:如何将另一个数据框的一部分合并到一个数据框...
我有一个dataframe(df1)如下: datetime m d 1d 2d 3d 2014-01-01 1 1 2 2 3 2014-01-0 ...
最新文章
- JSX设置CSS样式详解
- 如何提高企业竞争力,科学的组织架构是第一王牌
- BeanShell脚本接口之匿名类
- Divide a list of numbers into group of consecutive numbers
- 系统架构设计师证书含金量_计算机专科生不能错过的两个证书,含金量比较高,出社会有益...
- 数据结构 - 栈(数组模拟栈操作)
- 关于IE6下用Jquery attr('onclick')问题
- Eclipse快捷键_10个最高效的快捷键
- 谷歌浏览器和对应驱动器的安装、配置(附有安装包)
- 2022年首次升级:静态代码测试工具Helix QAC 2022.1 新版本功能快讯
- Xftp的下载和安装(超详细)
- 图像处理之图像去雾中文综述性论文
- OpenCV最小二乘法圆拟合
- gin-gonic/gin使用详解
- 用什么软件测试硬盘使用过多少次,硬盘能查看使用次数吗
- twig 之基本语法
- 一起来围观软件测试工程师月薪20K的简历
- 常见Win7优化误区,教你正确方法!
- Mac xmind安装与破解版
- NVIDIA,显卡驱动,CUDA版本之间兼容关系及安装
热门文章
- Detachment HDU - 5976(数学+费马小定理求逆元+前缀和前缀积)
- 专业技术计算机应用能力考试题库,全国专业技术人员计算机应用能力考试题库-Excel,Word,XP...
- 电脑剪切,电脑剪切快捷键
- databricks使用教程
- Android集成QQ登录
- 非常适合新手使用的吉他调音软件!
- 使用caj文件转换器怎么转换成word文档
- 傅里叶变换短时傅里叶变换小波变换
- ruoyi是怎么点击菜单跳转页面的_5分钟添加公众号报名功能: 点击公众号菜单报名...
- 3、组推荐系统及其应用研究---张玉洁(2016)