4.R语言【dplyr包】使用方法

news2025/1/16 2:40:41

b站课程视频链接:
https://www.bilibili.com/video/BV19x411X7C6?p=1
腾讯课堂(最新,但是要花钱,我花99😢😢元买了,感觉讲的没问题,就是知识点结构有点乱,有点废话):
https://ke.qq.com/course/3707827#term_id=103855009
 
本笔记前面的笔记参照b站视频,【后面的画图】参考了付费视频
笔记顺序做了些调整【个人感觉逻辑顺畅】,并删掉一些不重要的内容,以及补充了个人理解
系列笔记目录【持续更新】:https://blog.csdn.net/weixin_42214698/category_11393896.html

文章目录

  • 数据转换之dplyr包
    • 1. 对单表格的操作
    • 2. dplyr包的统计函数
    • 3. 链式操作符 ——“%>% ”
    • 4. 对双表格的操作
    • 5.数据集的集合运算

数据转换之dplyr包

dplyr包不仅可以对单个表格进行操作,也可以对双表格进行操作。 (使用R中的iris数据集做演示)

install.packages("dplyr")
library(dplyr)
# 列出该包的函数
ls("package:dplyr")

因为dplyr包有很多函数,为了防止dplyr包中的函数名与其他函数产生冲突,使用时前面加上“包名::”

1. 对单表格的操作

# 过滤函数  选出 Sepal.Length>7 的行
dplyr::filter(iris,Sepal.Length>7)

#去除重复  
# rbind是行合并     iris[1:10, ]是前10行,iris[1:15, ]是前15行   最终结果是只有前15行
dplyr::distinct(rbind(iris[1:10, ] , iris[1:15, ])) 

#slice是切片的意思,可以用于取出数据任意行
dplyr::slice(iris,10:15) 

#随机取样10行
dplyr::sample_n(iris,10) 
#按比例随机取样  0.1是比例
dplyr::sample_frac(iris,0.1) 


 #按照iris中的花萼长度Sepal.Length进行排序  
dplyr::arrange(iris,Sepal.Length)
#降序
dplyr::arrange(iris,desc(Sepal.Length)) 


#添加新的变量new,其值是Sepal.Length+Petal.Length
dplyr::mutate(iris,new=Sepal.Length+Petal.Length)




# 根据Species进行分组
> dplyr::group_by(iris,Species)
# A tibble: 150 × 5
# Groups:   Species [3]
   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
          <dbl>       <dbl>        <dbl>       <dbl> <fct>  
 1          5.1         3.5          1.4         0.2 setosa 
 2          4.9         3            1.4         0.2 setosa 
 3          4.7         3.2          1.3         0.2 setosa 
 4          4.6         3.1          1.5         0.2 setosa 
 5          5           3.6          1.4         0.2 setosa 
 6          5.4         3.9          1.7         0.4 setosa 
 7          4.6         3.4          1.4         0.3 setosa 
 8          5           3.4          1.5         0.2 setosa 
 9          4.4         2.9          1.4         0.2 setosa 
10          4.9         3.1          1.5         0.1 setosa 
# … with 140 more rows
# ℹ Use `print(n = ...)` to see more rows

select函数:dplyr包中的数据框取子集功能,比R自带的subset函数更加强大。
在这里插入图片描述



2. dplyr包的统计函数

> summarise(iris,avg=mean(Sepal.Length))
       avg
1 5.843333
> summarise(iris,sum=sum(Sepal.Length))
    sum
1 876.5



3. 链式操作符 ——“%>% ”

它的功能是用于实现将一个函数的输出传递给下一个函数,作为下一个函数的输入。
在RStudio中可以使用ctrl+shift+M快捷键输出来。

#输出mtcars中的第10到20行
head(mtcars,20) %>% tail(10) 

对iris数据集先进行分组,再求平均,最后排序
> iris %>% group_by(Species)
# A tibble: 150 × 5
# Groups:   Species [3]
   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
          <dbl>       <dbl>        <dbl>       <dbl> <fct>  
 1          5.1         3.5          1.4         0.2 setosa 
 2          4.9         3            1.4         0.2 setosa 
 3          4.7         3.2          1.3         0.2 setosa 
 4          4.6         3.1          1.5         0.2 setosa 
 5          5           3.6          1.4         0.2 setosa 
 6          5.4         3.9          1.7         0.4 setosa 
 7          4.6         3.4          1.4         0.3 setosa 
 8          5           3.4          1.5         0.2 setosa 
 9          4.4         2.9          1.4         0.2 setosa 
10          4.9         3.1          1.5         0.1 setosa 
# … with 140 more rows
# ℹ Use `print(n = ...)` to see more rows
> iris %>% group_by(Species) %>% summarise(avg=mean(Sepal.Width))
# A tibble: 3 × 2
  Species      avg
  <fct>      <dbl>
1 setosa      3.43
2 versicolor  2.77
3 virginica   2.97
> iris %>% group_by(Species) %>% summarise(avg=mean(Sepal.Width)) %>%arrange(avg) 
# A tibble: 3 × 2
  Species      avg
  <fct>      <dbl>
1 versicolor  2.77
2 virginica   2.97
3 setosa      3.43



4. 对双表格的操作

1)左连接 (以左表为基表)
dplyr::left_join(a,b,by=“x1”)
在这里插入图片描述

2)右连接 (以右表为基表)
dplyr::right_join(a,b,by=“x1”)
在这里插入图片描述

3)内连接:取x1的交集
dplyr::inner_join(a,b,by=“x1”)

在这里插入图片描述

4)全连接:取x1的并集
在这里插入图片描述

5)半连接:a与b的交集,把b中有的,a中没有的(即x3列)去掉
dplyr::semi_join(a,b,by=“x1”)
在这里插入图片描述

6)反连接:a与b的补集,保留a中有,而b中没有的观测
dplyr::anti_join(a,b,by=“x1”)

在这里插入图片描述



5.数据集的集合运算

# 前20行
first <- slice(mtcars,1:20)  
# 第10~30行
second <- slice(mtcars,10:30)  

1)取数据集交集:intersect(first,second)  
2)取数据集并集:dplyr::union_all(first,second)  
3)取非冗余的数据集并集:  dplyr::union(first,second)  
4)取first的补集:setdiff(first,second)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/159072.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

黑马程序员Java教程学习笔记(二)

学习视频&#xff1a;https://www.bilibili.com/video/BV1Cv411372m 如侵权&#xff0c;请私信联系本人删除 文章目录黑马程序员Java学习笔记&#xff08;二&#xff09;数组概述数组定义方式一、访问、注意事项数组定义方式二&#xff0c;元素默认值规则数组遍历、元素求和数组…

HTML5+CSS3小实例:文本背景扫光效果

实例:文本背景扫光效果 技术栈:HTML+CSS 效果: 源码: 【html】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" content="width…

【OpenGL学习】OpenGL环境配置

OpenGL环境配置 为了能够定义OpenGL上下文和创建用于显示的窗口&#xff0c;我们首先需要配置一些库来帮助我们实现&#xff0c;当前比较流行的用于创建窗口的库有GLUT&#xff0c;SDL&#xff0c;SFML和GLFW&#xff0c;其中网上的大部分教程使用的都是GLFW&#xff0c;因此我…

聊聊Pytorch2.0的新特性

一句话概括下&#xff0c;Pytorch2.0的功能介绍核心就是&#xff1a;torch.compile opt_module torch.compile(module)一行代码就能优化你的模型&#xff0c;优化后的模型和往常使用方式一样 速度会提升&#xff0c;比较重要的一点是&#xff1a;可以用于训练或者部署&#…

Grafana 告警接入飞书通知

Grafana 系列文章&#xff0c;版本&#xff1a;OOS v9.3.1 Grafana 的介绍和安装Grafana监控大屏配置参数介绍&#xff08;一&#xff09;Grafana监控大屏配置参数介绍&#xff08;二&#xff09;Grafana监控大屏可视化图表Grafana 查询数据和转换数据Grafana 告警模块介绍Graf…

带你从源码中分析关于vue(v2.7.10)的面试题

我们在面试的时候经常会被问到vue框架的原理类问题&#xff0c;我今天整理了一些常见问题和答案&#xff0c;希望有不正确之处还请指正。 1.new Vue时发生了什么 首先实例化一个对象&#xff0c;该对象执行init方法初始化生命周期等等&#xff0c;随后执行$mount方法开始生成v…

Modbus Slave缓冲区溢出漏洞CVE-2022-1068分析与复现

漏洞概述Modbus Slave是一个模拟工业领域通信协议Modbus从站的上位机软件&#xff0c;主要用于测试和调试Modbus从设备。该软件7.4.2以及以前的版本&#xff0c;在注册时&#xff0c;未对注册码长度进行安全检查&#xff0c;存在缓冲区溢出漏洞&#xff0c;导致软件崩溃。影响范…

在 Kubernetes 中部署并使用 KubeEdge

作者&#xff1a;马伟&#xff0c;青云科技容器顾问&#xff0c;云原生爱好者&#xff0c;目前专注于云原生技术&#xff0c;云原生领域技术栈涉及 Kubernetes、KubeSphere、KubeKey 等。 边缘计算在广泛制造业、工业、零售和金融等行业&#xff0c;随着云原生应用的兴起&#…

UDS诊断系列介绍07-2E服务

本文框架1. 系列介绍2E服务概述2. 2E服务请求与应答2.1 2E服务请求2.2 2E服务肯定响应2.3 2E服务否定应答3. Autosar系列文章快速链接1. 系列介绍 UDS&#xff08;Unified Diagnostic Services&#xff09;协议&#xff0c;即统一的诊断服务&#xff0c;是面向整车所有ECU的一…

Webpack打包图片-JS-Vue文件

打包图片等静态资源 资源模块 | webpack 中文文档 (docschina.org) 1、加载图片案例准备 为了演示我们项目中可以加载图片&#xff0c;我们需要在项目中使用图片&#xff0c;比较常见的使用图片的方式是两种&#xff1a; img元素&#xff0c;设置src属性&#xff1b;其他元…

基于Java jsp+mysql+Spring的汽车出租平台租赁网站平台设计和实现

基于Java jspmysqlSpring的汽车出租平台租赁网站平台设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 …

蓝队攻击的四个阶段(二)

目录 一&#xff0c;漏洞利用工具 (1)WebLogic 全版本需洞利用工具 (2)Struts2 综合漏洞利用工具 (3)sqlmap 注入工具 (4)vSphere Client RCE 漏洞(CVE-2021-21972)利用工具 (5)Windows Print Spooler 权限提升漏洞(CVE-2021-1675) (6)Exchange Server漏洞组合利用(CVE-2…

JVM-【面试题】-带你了解对象的创建过程

本文介绍对象在jvm的创建过程该图是对象在jvm的创建过程一、类加载检查虚拟机遇到一条new指令时&#xff0c;首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用&#xff0c;并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有&#xff0c;那…

图机器学习-图机器学习传统方法

图机器学习-图机器学习传统方法 最近在学习一些GNN相关的知识&#xff0c;想写一些笔记记录一下自己的学习过程&#xff0c;主要的学习资料为CS224W课程主页上面的资料和b站同济子豪兄的中文讲解。这篇博客是我2023年的第一篇博客&#xff0c;想以图机器学习中的传统方法作为博…

项目管理工具dhtmlxGantt甘特图入门教程(八):数据加载(三)

dhtmlxGantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表&#xff0c;可满足项目管理控件应用程序的所有需求&#xff0c;是最完善的甘特图图表库。 这篇文章给大家讲解如何利用 dhtmlxGantt正确保存和显示任务的结束日期&#xff0c;本节将给你一个明确答案。 Dht…

异常-捕获业务异常踩坑记录

事情是这样&#xff0c;用了google的一个本地缓存框架&#xff0c;就是在查询数据的时候如果有就取缓存&#xff0c;没有就发http请求调接口&#xff0c;但是http请求也会有查询失败的时候&#xff0c;查询失败就会手动抛一个业务异常&#xff0c;然后我会在外层各种捕获异常&a…

三消游戏查找算法的原理和实现

本文首发于公众号&#xff1a; 小蚂蚁教你做游戏。欢迎关注领取更多学习做游戏的原创教程资料&#xff0c;每天学点儿游戏开发知识。嗨&#xff01;大家好&#xff0c;我是小蚂蚁。今天这篇文章分享一下三消查找算法的原理和实现&#xff0c;其实三消的机制最早源于《宝石方块》…

无联不成春,2023创宇网安春联展!

春 联 又叫“春贴”“门对”“对联” 它以对仗工整、简洁精巧的文字 描绘美好形象&#xff0c;寄托美好愿望 是中国独特的文学形式 网络安全的列车已驶入2023&#xff0c;癸卯兔年新春将至&#xff01; 热爱中华优秀传统文化的创宇人&#xff0c;也纷纷以春联为载体&…

大网进阶安全刷题讲解(带答案)(1)

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.大网进阶安全刷题 前言 本章将会讲解大网进阶安全刷题讲解。 一.大网进阶…

测试开发 | AppCrawler 自动遍历测试实践(二):定制化配置

本文为霍格沃兹测试学院学院学员课程 AppCrawler 学习笔记&#xff0c;文末加群一起学习交流。 定制化配置 自动遍历测试技术以及工具该如何选择和快速入门&#xff1f;经过对比和需求&#xff0c;最终选择测试架构师思寒大佬的 AppCrawler 作为自动遍历测试的工具。以下就分享…