当前位置: 首页 > news >正文

dplyr、tidyverse和ggplot2初探

dplyr、tidyverse 和 ggplot2 之间有紧密的联系,它们都是 R 语言中用于数据处理和可视化的工具,且都源于 Hadley Wickham 的工作。它们各自有不同的功能,但可以无缝协作,帮助用户完成从数据处理到数据可视化的工作流。以下是它们之间的关系和区别:

  1. ggplot2:
    功能:ggplot2 是一个 数据可视化 包,用于创建各种类型的图表。它是基于 图形语法(Grammar of Graphics)的理念,允许用户灵活地创建自定义图表。
    用途:ggplot2 主要用于数据的可视化展示,包括散点图、折线图、柱状图、箱线图等。
    示例:
library(ggplot2)# 使用 ggplot2 绘制散点图
ggplot(mtcars, aes(x = mpg, y = hp)) + geom_point() +ggtitle("Scatter plot of mpg vs hp")
  1. dplyr:
    功能:dplyr 是一个专门用于 数据操作和处理 的包。它提供了简洁的函数和语法,特别适合处理和变换数据框。它的主要函数包括:
    filter():按条件筛选数据。
    select():选择数据的列。
    mutate():添加或修改列。
    summarize():汇总数据。
    arrange():对数据进行排序。
    用途:dplyr 用于高效、直观地操作数据集,特别适合数据清理、变换和汇总。
    示例:
library(dplyr)# 使用 dplyr 对数据进行操作
mtcars %>%filter(mpg > 20) %>%select(mpg, hp) %>%arrange(desc(hp))
  1. tidyverse:
    功能:tidyverse 是一个 R 语言中的生态系统,由一系列功能强大的 R 包组成,用于处理数据、清理数据、分析数据和可视化数据。tidyverse 的核心理念是“整洁数据”(Tidy Data),即数据应该被组织成一个标准化的结构,每列代表一个变量,每行代表一个观测值。

用途:tidyverse 是一个 集合包,包括多个用于数据科学的 R 包,所有这些包都遵循一致的设计原则和数据结构。tidyverse 中最常用的包包括:

ggplot2(数据可视化)
dplyr(数据操作)
tidyr(数据整理)
readr(数据输入/输出)
tibble(增强的 data.frame)
purrr(函数式编程)
示例:

# 加载tidyverse包(包括ggplot2、dplyr等)
library(tidyverse)# 整合数据处理和可视化
mtcars %>%filter(mpg > 20) %>%ggplot(aes(x = mpg, y = hp)) +geom_point()

三者之间的关系:
ggplot2 和 dplyr 都是 tidyverse 生态系统的一部分。它们各自专注于不同的任务,但共同遵循了整洁数据的理念,且无缝集成。
ggplot2 用于 数据可视化。
dplyr 用于 数据处理。
tidyverse 是一个集合包,包含了 ggplot2、dplyr 等工具,提供完整的 数据科学工作流。
整合性:你可以先使用 dplyr 对数据进行筛选、转换、汇总等操作,然后直接用 ggplot2 进行可视化。它们共享相同的“整洁数据”结构,因此在不同包之间传递数据非常方便。
例如,dplyr 和 ggplot2 的结合:

library(tidyverse)# 使用 dplyr 处理数据,然后用 ggplot2 可视化
mtcars %>%filter(mpg > 20) %>%        # 用 dplyr 筛选数据ggplot(aes(x = mpg, y = hp)) +  # 用 ggplot2 绘制散点图geom_point() +ggtitle("Scatter plot of mpg vs hp for cars with mpg > 20")

总结:
ggplot2 专注于 数据可视化。
dplyr 专注于 数据处理和操作。
tidyverse 是一个 集合包,包含 ggplot2、dplyr 和其他包,用于完成整个数据分析工作流,从数据整理到可视化。
这三者结合起来,可以为数据科学工作提供极大的便利。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • CX_SY_RANGE_OUT_OF_BOUNDS
  • 外包干了三年,快要废了。。。
  • jQuery UI API 文档
  • RISC-V交叉编译器下载
  • eureka服务开启之后的默认登录账号密码是什么?
  • 高德地图绘图,点标记,并计算中心点
  • Leetcode面试经典150题-141.环形链表
  • 官宣:Zilliz 在亚马逊云科技中国区正式开服!
  • EA橘子平台Origin离线安装包获取
  • 树莓派安装 OpenCV 教程
  • 腾讯云使用
  • 企业采用电子招投标的原因及系统推荐
  • 50ETF期权可以当天买卖吗?
  • 观众登记2025中国(深圳)国际智能手机供应链展览会
  • 解算方案—二连杆与三连杆解算
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 【comparator, comparable】小总结
  • Angular Elements 及其运作原理
  • ECS应用管理最佳实践
  • extjs4学习之配置
  • gulp 教程
  • IDEA常用插件整理
  • Java 网络编程(2):UDP 的使用
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • vue-cli3搭建项目
  • webgl (原生)基础入门指南【一】
  • Xmanager 远程桌面 CentOS 7
  • 程序员该如何有效的找工作?
  • 高度不固定时垂直居中
  • 警报:线上事故之CountDownLatch的威力
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 使用SAX解析XML
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 用Python写一份独特的元宵节祝福
  • Prometheus VS InfluxDB
  • Spring Batch JSON 支持
  • ​1:1公有云能力整体输出,腾讯云“七剑”下云端
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​MySQL主从复制一致性检测
  • !!java web学习笔记(一到五)
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (33)STM32——485实验笔记
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (分类)KNN算法- 参数调优
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (利用IDEA+Maven)定制属于自己的jar包
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • (一) springboot详细介绍
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (转)Mysql的优化设置
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • (转)项目管理杂谈-我所期望的新人