R-数据科学(五):数据框-双表操作

在我们分析数据过程中,不仅仅是处理一个数据集,也会组合两个数据集,这时候就可以用dplyr包进行相关的操作,当然这些操作也可以分为两大类:按行组合和按列组合。

在使用dplyr包之前,我想先介绍R中两个基础函数rbind()函数和cbind函数。这两个函数只能满足简单的需求,主要是用来完全合并两个数据集。

rbind()函数作用是按行合并,使用前提是两个数据集列名相同cbind()函数作用是按列合并,cbind()函数只要求两个数据集的行数相同就可以,合并后的数据集的行名会默认为前一个数据集的行名。

1 rbind()、cbind()函数合并数据集

新建两个数据集

options(stringsAsFactors = F) #全局变量中字符串不改为因子
x = data.frame(A = c('a','b','c'),
               B = c('t','u','v'),
               C = 1:3)
rownames(x) = c('rx1','rx2','rx3')

y = data.frame(A = c('a','b','d'),
               B = c('t','u','w'),
               D = c('3','2','1'))
rownames(y) = c('ry1','ry2','ry3')

rbind()函数按行合并两个数据集

c = rbind(x[,1:2],y[,1:2])
c
##     A B
## rx1 a t
## rx2 b u
## rx3 c v
## ry1 a t
## ry2 b u
## ry3 d w

cbind()函数按列合并两个数据集

d = cbind(x,y)
d
##     A B C A B D
## rx1 a t 1 a t 3
## rx2 b u 2 b u 2
## rx3 c v 3 d w 1

2 dplyr包组合数据集

2.1 按行组合

新建两个数据集

x = data.frame(A = c('a','b','c'),
               B = c('t','u','v'),
               C = 1:3)
x
##   A B C
## 1 a t 1
## 2 b u 2
## 3 c v 3

y =  data.frame( A = c('c','d'),
                 B = c('v','w'),
                 C = c(3,4))
y
##   A B C
## 1 c v 3
## 2 d w 4

intersect()函数取交集,取两个数据集共有的行

intersect(x,y)
##   A B C
## 1 c v 3

union()函数取并集,取两个数据集所有的行,并且去除重复行

union(x,y)
##   A B C
## 1 a t 1
## 2 b u 2
## 3 c v 3
## 4 d w 4

setdiff()函数取补集,只在一个数据集中存在的行

setdiff(x,y)
##   A B C
## 1 a t 1
## 2 b u 2

2.2 按列组合

新建两个数据集

x = data.frame(R = c('a','b','c'),
               N = c('t','u','v'),
               G = 1:3)

y = data.frame(F = c('a','d','b','f'),
               P = c('a','w','t','u'),
               X = 4:7)

在这里插入图片描述

为了方便后面解释,定义一个连接变量:

  • 通过数据集x中变量R和数据集y中变量F将两个数据集连接在一起,形成一个新的数据集,那么这两个变量称都为连接变量

left_join()函数进行左连接:数据集y通过连接变量合并到数据集x上,数据集y只保留两个连接变量中共同元素所在的行,其余位置用NA替代。

left_join(x,y,by = c('R'='F'))
##   R N G    P  X
## 1 a t 1    a  4
## 2 b u 2    t  6
## 3 c v 3 <NA> NA

right_join()函数进行右连接:右连接和左连接作用恰好相反,相当于左连接中两个数据集互换位置。

right_join(x,y,by = c('R'='F'))
##   R    N  G P X
## 1 a    t  1 a 4
## 2 d <NA> NA w 5
## 3 b    u  2 t 6
## 4 f <NA> NA u 7

inner_join()函数进行内连接:通过连接变量合并数据集x和数据集y,并且取两个连接变量共同元素所在的行。

inner_join(x,y,by = c('R'='F'))
##   R N G P X
## 1 a t 1 a 4
## 2 b u 2 t 6

full_join()函数进行全连接:通过连接变量合并数据集x和数据集y,取两个数据集的所有行,用NA表示缺失值

full_join(x,y,by = c('R'='F'))
##   R    N  G    P  X
## 1 a    t  1    a  4
## 2 b    u  2    t  6
## 3 c    v  3 <NA> NA
## 4 d <NA> NA    w  5
## 5 f <NA> NA    u  7

semi_join()函数进行半连接:提取数据集x中两个连接变量共有元素所在的行,因此semi_join()函数和match()函数功能很相似。

semi_join(x,y,by = c('R'='F'))
##   R N G
## 1 a t 1
## 2 b u 2

anti_join()函数进行反连接:提取数据框x中仅存在于连接变量R中的元素所在的行。

anti_join(x,y,by = c('R'='F'))
##   R N G
## 1 c v 3

当两个连接变量名相同时,可以简化为:

y = rename(y,R = F) #将数据集y中的变量F重新命名为R
left_join(x,y,by = 'R')
##   R N G    P  X
## 1 a t 1    a  4
## 2 b u 2    t  6
## 3 c v 3 <NA> NA

本博客内容将同步更新到个人微信公众号生信玩家。欢迎大家关注~~~
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
清华大学出品的R语言全套课程PPT学习课件,非常适合大学生和职场人士学习,也适合老鸟复习回顾,完全可用于自学入门,很经典好用的PPT课件哦~ (1)清华大学精品数据科学R语言全套课程PPT课件含习题(26页) 第1章 R语言绪论(1) (2)清华大学精品数据科学R语言全套课程PPT课件含习题(27页) 第2章 R语言入门 (3)清华大学精品数据科学R语言全套课程PPT课件含习题(53页) 第3章 数据模型 (4)清华大学精品数据科学R语言全套课程PPT课件含习题(15页) 第4章 数据准备 (5)清华大学精品数据科学R语言全套课程PPT课件含习题(66页) 第5章 数据可视化 (6)清华大学精品数据科学R语言全套课程PPT课件含习题(35页) 第6章 数据探索 (7)清华大学精品数据科学R语言全套课程PPT课件含习题(38页) 第7章 数据变换 (8)清华大学精品数据科学R语言全套课程PPT课件含习题(20页) 第8章 高级编程 (9)清华大学精品数据科学R语言全套课程PPT课件含习题(63页) 第9章 数据建模 (10)清华大学精品数据科学R语言全套课程PPT课件含习题(25页) 第10章 数据评估 (11)清华大学精品数据科学R语言全套课程PPT课件含习题(21页) 第11章 影响大学平均录取分数线因素分析 (12)清华大学精品数据科学R语言全套课程PPT课件含习题(18页) 第12章 收视率分析 (13)清华大学精品数据科学R语言全套课程PPT课件含习题(18页) 第13章 RHadoop (14)清华大学精品数据科学R语言全套课程PPT课件含习题(25页) 第14章 Rspark
清华大学出品的R语言全套课程PPT学习课件,非常适合大学生和职场人士学习,也适合老鸟复习回顾,完全可用于自学入门,很经典好用的PPT课件哦~ (1)清华大学精品数据科学R语言全套课程PPT课件含习题(26页) 第1章 R语言绪论(1) (2)清华大学精品数据科学R语言全套课程PPT课件含习题(27页) 第2章 R语言入门 (3)清华大学精品数据科学R语言全套课程PPT课件含习题(53页) 第3章 数据模型 (4)清华大学精品数据科学R语言全套课程PPT课件含习题(15页) 第4章 数据准备 (5)清华大学精品数据科学R语言全套课程PPT课件含习题(66页) 第5章 数据可视化 (6)清华大学精品数据科学R语言全套课程PPT课件含习题(35页) 第6章 数据探索 (7)清华大学精品数据科学R语言全套课程PPT课件含习题(38页) 第7章 数据变换 (8)清华大学精品数据科学R语言全套课程PPT课件含习题(20页) 第8章 高级编程 (9)清华大学精品数据科学R语言全套课程PPT课件含习题(63页) 第9章 数据建模 (10)清华大学精品数据科学R语言全套课程PPT课件含习题(25页) 第10章 数据评估 (11)清华大学精品数据科学R语言全套课程PPT课件含习题(21页) 第11章 影响大学平均录取分数线因素分析 (12)清华大学精品数据科学R语言全套课程PPT课件含习题(18页) 第12章 收视率分析 (13)清华大学精品数据科学R语言全套课程PPT课件含习题(18页) 第13章 RHadoop (14)清华大学精品数据科学R语言全套课程PPT课件含习题(25页) 第14章 Rspark

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值