当前位置:网站首页>【R语言】两个/N个数据合并merge函数
【R语言】两个/N个数据合并merge函数
2022-07-01 07:18:00 【违规账号247188】
两个数据框合并
data1=data.frame(
names = c('AAA', 'CCC', 'DDD', 'EEE', 'FFF' ),
logFC = c(3, -0.4, 5, 0.4, -3 ),
bmi = c('正常', '正常','超重','肥胖','正常')
)
data2=data.frame(
names = c('AAA','BBB', 'CCC', 'DDD', 'EEE' ),
gender = c(1, 2, 1, 2, 1), #1=男 2=女
bmi = c('正常','低体重','正常','超重','肥胖' )
)
merge(data1,data2,all=TRUE)
# 同样结果,可以不用加by
merge(data1,data2,all=TRUE,by = intersect(names(data1), names(data2)))
| names | bmi | logFC | gender |
|---|---|---|---|
| AAA | 正常 | 3 | 1 |
| BBB | 低体重 | NA | 2 |
| CCC | 正常 | -0.4 | 1 |
| DDD | 超重 | 5 | 2 |
| EEE | 肥胖 | 0.4 | 1 |
| FFF | 正常 | -3 | NA |
dplyr::full_join函数情况
dplyr::full_join(data1,data2)
dplyr::full_join函数情况,如果加by,会出现重复的变量名为 .x .y
dplyr::full_join(data1,data2,by=c("names"))
> dplyr::full_join(data1,data2)
Joining, by = c("names", "bmi")
names logFC bmi gender
1 AAA 3.0 正常 1
2 CCC -0.4 正常 1
3 DDD 5.0 超重 2
4 EEE 0.4 肥胖 1
5 FFF -3.0 正常 NA
6 BBB NA 低体重 2
| names | logFC | bmi.x | gender | bmi.y |
|---|---|---|---|---|
| AAA | 3 | 正常 | 1 | 正常 |
| CCC | -0.4 | 正常 | 1 | 正常 |
| DDD | 5 | 超重 | 2 | 超重 |
| EEE | 0.4 | 肥胖 | 1 | 肥胖 |
| FFF | -3 | 正常 | NA | NA |
| BBB | NA | NA | 2 | 低体重 |
R merge() 与dplyr join()
| dplyr | base |
|---|---|
| inner_join(df1, df2) | merge(df1, df2) |
| left_join(df1, df2) | merge(df1, df2, all.x = TRUE) |
| right_join(df1, df2) | merge(df1, df2, all.y = TRUE) |
| full_join(df1, df2) | merge(df1, df2, all = TRUE) |
| semi_join(df1, df2) | df1[df1 x x %in% df2 xx, , drop = FALSE] |
| anti_join(df1, df2) | df1[!df1 x x %in% df2 xx, , drop = FALSE] |
# 假设相同变量,里面得内容不一样,如AAA-BMI-常1
data2=data.frame(
names = c('AAA','BBB', 'CCC', 'DDD', 'EEE' ),
gender = c(1, 2, 1, 2, 1), #1=男 2=女
bmi = c('正常1','低体重','正常','超重','肥胖' )
)
merge(data1,data2,all=TRUE,by = intersect(names(data1), names(data2)))
# 结果会另起一行
| names | bmi | logFC | gender |
|---|---|---|---|
| AAA | 正常 | 3 | NA |
| AAA | 正常1 | NA | 1 |
| BBB | 低体重 | NA | 2 |
| CCC | 正常 | -0.4 | 1 |
| DDD | 超重 | 5 | 2 |
| EEE | 肥胖 | 0.4 | 1 |
| FFF | 正常 | -3 | NA |
多个数据框合并
data1=data.frame(
names = c('AAA', 'CCC', 'DDD', 'EEE', 'FFF' ),
logFC = c(3, -0.4, 5, 0.4, -3 ),
bmi = c('正常', '正常','超重','肥胖','正常')
)
data2=data.frame(
names = c('AAA','BBB', 'CCC', 'DDD', 'EEE' ),
gender = c(1, 2, 1, 2, 1), #1=男 2=女
bmi = c('正常','低体重','正常','超重','肥胖' )
)
data3=data.frame(
names = c('GGG' ),
gender = c("男"), #1=男 2=女
bmi = c('正常' )
)
file=ls(pattern = "data")
ALL1=list(data1,data2,data3)
multimerge<-function(dat=list(),...){
if(length(dat)<2)return(as.data.frame(dat))
mergedat<-dat[[1]]
dat[[1]]<-NULL
for(i in dat){
mergedat<-merge(all=TRUE,mergedat,i,...)
}
return(mergedat)
}
multimerge(ALL1)
边栏推荐
- 比赛即实战!中国软件杯发布全新产业创新赛项,校企可联合参赛
- 【编程强训2】排序子序列+倒置字符串
- 在长城证券上做基金定投安全吗?
- Is it safe and reliable for Huatai Securities to open an account? How to open Huatai Securities Account
- Redisson utilise la solution complète - redisson Documents officiels + commentaires (Partie 1)
- 【图像处理】图像直方图均衡化系统含GUI界面
- [programming training 2] sorting subsequence + inverted string
- Pourquoi tant de gens sont - ils devenus des gestionnaires de produits? Quelles sont les perspectives de développement des gestionnaires de produits?
- JSP - paging
- 电脑有网络,但所有浏览器网页都打不开,是怎么回事?
猜你喜欢

TodoList经典案例①

JSP - paging

Challenges faced by operation and maintenance? Intelligent operation and maintenance management system to help you

DC-4 target

How to enter the Internet industry and become a product manager? How to become a product manager without project experience?

Unity2021-Scene视图中物体无法直接选中的解决办法

Understanding of Turing test and Chinese Room

Huawei modelarts training alexnet model

Custom events of components ②

ctfshow-web351(SSRF)
随机推荐
redisson使用全解——redisson官方文档+注释(中篇)
Félicitations pour l'inscription réussie de wuxinghe
Unity2021-Scene视图中物体无法直接选中的解决办法
ctfshow-web354(SSRF)
[chapter 72 of the flutter problem series] a solution to the problem that pictures taken in the flutter using the camera plug-in are stretched
【电气介数】电气介数及考虑HVDC和FACTS元件的电气介数计算
【FPGA帧差】基于VmodCAM摄像头的帧差法目标跟踪FPGA实现
運維管理系統,人性化操作體驗
Autosar 学习记录(1) – EcuM_Init
【编程强训】删除公共字符(哈希映射)+组队竞赛(贪心)
iNFTnews | 从《雪崩》到百度“希壤”,元宇宙30年的16件大事
JSP - 分页
2022电工(中级)复训题库及答案
vscode 根据 ESLint 规范自动格式化代码
The game is real! China software cup releases a new industrial innovation competition, and schools and enterprises can participate in it jointly
如何制作专属的VS Code主题
C language implementation [Sanzi chess game] (step analysis and implementation source code)
Huawei modelarts training alexnet model
Fix the problem that the AI video intelligent platform easycvr device video cannot be played
[microservice openfeign] feign's log record