表格的融合
时间:2022-07-24
本文章向大家介绍表格的融合,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
有时候两个数据框并没有很好地保持一致,不能简单地使用cbind()和rbind()函数,所以他们需要一个共同的列(common key)作为细胞融合的依据。最常用的内置函数为merge()和dplyr()包中的*_join(系列函数。
1 merge()函数
优势在于对于不同的数据框,可以指定不同的匹配列名;缺点再于运行速度较慢,其中by.x指定左边数据框匹配列,by.y指定右边数据框匹配列。
> df1<-data.frame(x=c("a","b","c"),y=1:3)
> df2<-data.frame(x=c("a","b","d"),z=c(2,5,3))
> df3<-data.frame(g=c("a","b","d"),z=c(2,5,3))
> df4<-data.frame(x=c("a","b","d"),y=c(1,4,2),z=c(2,5,3))
> d_m1<-merge(df1,df2,by="x",all=TURE)
all参数决定有缺失值的行处理原则
d_m1<-merge(df1,df2,by="x",all=TRUE)
> d_m1
x y z
1 a 1 2
2 b 2 5
3 c 3 NA
4 d NA 3
> d_m1<-merge(df1,df2,by="x",all=FALSE) #有缺损的被去掉了
> d_m1
x y z
1 a 1 2
2 b 2 5
对于列明不一样的表合并,可以用by.x和by.y
> d_m3<-merge(df1,df3,by.x="x",by.y ="g")
> d_m3
x y z
1 a 1 2
2 b 2 5
2 *_join()系列函数
dplyr包提供了left_join()、 right_join()、 inner_join()、 full_join()四个函数。其中full_join()函数主要用来生成两个集合的并集;inner_join()生成有效数据;其他两个函数使用的较少。另外两个表格融合时会用NA代替不存在的值。
1只保留左表的数据
> d_join<-left_join(df1,df2,by="x")
> d_join
x y z
1 a 1 2
2 b 2 5
3 c 3 NA
2只保留右表的数据
> e_join<-right_join(df1,df2,by="x")
> e_join
x y z
1 a 1 2
2 b 2 5
3 d NA 3
3只保留两个表共有的数据
> f_join<-inner_join(df1,df2,by="x")
> f_join
x y z
1 a 1 2
2 b 2 5
4保留两个表所有信息
> g_join<-full_join(df1,df2,by="x")
> g_join
x y z
1 a 1 2
2 b 2 5
3 c 3 NA
4 d NA 3
5多列匹配合并 by=c("x","y")
> h_join<-left_join(x=df1,y=df4,by=c("x","y"))
> h_join
x y z
1 a 1 2
2 b 2 NA
3 c 3 NA
5 根据两个标的不同列明合并 by=c("x"="g")
> i_join
x y z
1 a 1 2
2 b 2 5
3 c 3 NA
6如果遇到了两个表中有一列同名,但值不相同,合并的时候又都想保留下来,就可以用suffix给每个标的重复列明增加后缀
> j_join<-left_join(x=df1,y=df4,by="x",suffix=c(".1",".2"))
> j_join
x y.1 y.2 z
1 a 1 1 2
2 b 2 4 5
3 c 3 NA NA
- 机器学习的技术栈及应用实例脑洞
- 聊聊ES7与ES8特性
- 机器学习的技术栈及应用实例脑洞
- Ryu:OpenFlow协议源码分析
- 详解 LSTM
- 并发系列:从原子更新到CPU锁
- 前后端分离之vue2.0+webpack2 实战项目 -- webpack介绍
- 神经网络 之 感知器的概念和实现
- 图解ByteBuffer
- TensorFlow-1: 如何识别数字
- 你应该知道的Java垃圾收集器 - 串行、并行、CMS、G1
- ckplayer 如何在PC上完美支持 m3u8播放
- TensorFlow-2: 用 CNN 识别数字
- js图片前端预览之 filereader 和 window.URL.createObjectURL
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法