其他
探索数据之美:R语言中数据框融合秘籍!
探索数据之美:R语言中数据框融合秘籍!
介绍
本文介绍了三种实现两个数据框融合的方法。
分别为merge()函数;dplyr包的_join系列函数;rbind和cbind()函数
介绍
数据构建
实现方式:merge()
merge usage
两数据框同名列进行合并
指定列进行合并
依据多列进行合并
实现方式:dplyr包
保留左表的所有信息
保留右表的所有信息
保留两个表公共信息
保留两个表的所有信息
多列匹配
根据不同列名合并
当合并的列存在同名(不同值),使用suffix增加后缀
实现方式:cbind()和rbind()函数
rbind()函数 按行合并
cbind()函数 按列合并
正文部分
数据构建
## R数据处理基础-表格的融合
## Time: 20240320
## Author: xiaohe
## Notes: zhenzhen
## 数据构建
data_1<-data.frame(X=c("A","B","C","D"),Y=c(1,3,5,7))
data_2<-data.frame(X=c("A","B","E","F"),Z=c(2,4,5,6))
data_3<-data.frame(S=c("A","B","E","F"),Z=c(2,4,5,6))
data_4<-data.frame(X=c("A","B","E","F"),Y=c(1,2,5,7),Z=c(2,4,6,8))
实现方式:merge()
merge usage
# merge()函数
# usage
merge(x, y, # 要合并的两个数据框
by = intersect(names(x), names(y)), # 用来进行合并的列名,是x和y共有的列名的交集
by.x = by, by.y = by, # 指定x和y中用来进行合并的列名
all = FALSE, # 逻辑向量,指明是否要保留未匹配的行,默认为FALSE
all.x = all, all.y = all, # 逻辑向量,指示是否对应x或y中的所有行,而步仅仅是匹配的行
sort = TRUE, # 是否按照合并的列对结果进行排序,默认为TRUE
suffixes = c(".x",".y"), # 当存在重复的列名时,用于区分这些列的后缀
no.dups = TRUE, # 逻辑值,是否去除重复的列
incomparables = NULL, # 不可比较的值
...)
两数据框同名列进行合并
# 两数据框同名列进行合并
data_merge1<-merge(data_1,data_2,by="X",all = TRUE)
指定列进行合并
# 指定列进行合并
data_merge2<-merge(data_1,data_3,by.x = "X",by.y = "S")
依据多列进行合并
# 依据多列进行合并
data_merge3<-merge(data_1,data_4,by=c("X","Y"),all=TRUE)
实现方式:dplyr包
保留左表的所有信息
# 保留左表的所有数据
data_join_1<-dplyr::left_join(x=data_1,,y=data_2,by="X")
保留右表的所有信息
# 保留右表的所有数据
data_join_2<-dplyr::right_join(x=data_1,y=data_2,by="X")
保留两个表公共信息
# 保留两个表公共信息
data_join_3<-dplyr::inner_join(x=data_1,y=data_2,by="X")
保留两个表的所有信息
# 保留两个表的所有信息
data_join_4<-dplyr::full_join(x=data_1,y=data_2,by="X")
多列匹配
# 多列匹配
data_join_5<-dplyr::left_join(x=data_1,y=data_4,by=c("X","Y"))
根据不同列名合并
# 根据不同列名合并
data_join_6<-dplyr::left_join(x=data_1,y=data_3,by=c("X"="S"))
当合并的列存在同名(不同值),使用suffix增加后缀
# 当合并的列存在同名(不同值),使用suffix增加后缀
data_join_7<-dplyr::left_join(x=data_1,y=data_4,by="X",suffix = c(".1",".2"))
实现方式:cbind()和rbind()函数
rbind()函数 按行合并
## 数据构建
data_a<-data.frame(X=c("A","B"),Y=c(1,3))
data_b<-data.frame(X=c("C","D"),Y=c(2,4))
## 按行合并
data_rbind<-rbind(data_a,data_b)
cbind()函数 按列合并
## 数据构建
data_a<-data.frame(X=c("A","B"),Y=c(1,3))
data_b<-data.frame(S=c("C","D"),Z=c(2,4))
## 按列合并
data_cbind<-cbind(data_a,data_b)
备注
大家有兴趣可加群,欢迎交流学习,共同进步!
若群链接失效,可在本公众号内的对话框回复关键词【R语言学习交流群】
若您觉得本文有帮助,帮忙点击点赞和在看是对我最大的鼓励和支持!