• 主页
  • 课程

    关于课程

    • 课程归档
    • 成为一名讲师
    • 讲师信息
    同等学历教学

    同等学历教学

    免费
    阅读更多
  • 特色
    • 展示
    • 关于我们
    • 问答
  • 事件
  • 个性化
  • 博客
  • 联系
  • 站点资源
    有任何问题吗?
    (00) 123 456 789
    weinfoadmin@weinformatics.cn
    注册登录
    恒诺新知
    • 主页
    • 课程

      关于课程

      • 课程归档
      • 成为一名讲师
      • 讲师信息
      同等学历教学

      同等学历教学

      免费
      阅读更多
    • 特色
      • 展示
      • 关于我们
      • 问答
    • 事件
    • 个性化
    • 博客
    • 联系
    • 站点资源

      R语言

      • 首页
      • 博客
      • R语言
      • R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化

      • 发布者 weinfoadmin
      • 分类 R语言
      • 日期 2021年9月29日
      测试开头


      2021年第39周。


      这一周R语言学习,记录如下。


      01 

      Modern Statistics with R 


      一本在线开放书籍,介绍R语言做数据整理和探索,以及推断和预测的工作。


      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化


      访问网址:

      http://www.modernstatisticswithr.com/


      02 

      R4DS书籍


      最近,我在重温R4DS这本书籍。

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化


      你所想的数据科学是什么?


      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化


      实际中的数据科学是什么?


      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化


      数据的准备工作,需要花费大部分时间。


      我创建了R4DS学习群,加我的微信,备注:R4DS,邀请你入群,大家一起学习,同时,也会分享R4DS相关的资料。


      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化



      03 

      dplyr包的join系列函数


      数据关联是数据集成和整合的常用操作。

      dplyr包提供了一组功能强大的join函数集,可以方便地实现数据的关联。


      1 inner_join函数

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化

      2 left_join函数

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化

      3 right_join函数

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化

      4 full_join函数

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化

      5 semi_join函数

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化

      6 anti_join函数

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化

      关于这6种join操作,你理解了吗?有任何问题或者想法,请加入R4DS学习群,一起讨论。


      04 

      样本选择


      dplyr包的filter函数提供了强大的样本选择功能。

      filter函数理解。

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化


      05

       case_when函数理解


      dplyr包的case_when函数实现开关选择操作。

      case_when函数理解。


      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化



      06 

      R4DS第一章  ggplot2包与数据可视化简要笔记


      1 为什么需要数据可视化?

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化


      2 ggplot2包做数据可视化的逻辑


      图形语法+分层架构


      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化


      3 内容结构

      1)准备工作

      2)以研究mpg数据displ与hwy的关系的问题做引子,介绍利用数据可视化技术做图形化分析

      3)接下来介绍ggplot画图的重要组件

      • Aesthetic Mapping

      • Facets

      • Geometric Objects

      • Statistical Transformations

      • Position Adjustments

      • Coordinate Systems


      4) 图形学的分层语法

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化


      4 目标管理

      1)理解ggplot2包画图的基本逻辑和原理。

      2)掌握常用的5种图形,散点图、条形图、盒箱图、直方图、点线图。

      3)学会用图形化思维对数据做探索、理解和表达。


      5 实操代码

      graphics.off()
      rm(list = ls())
      options(warn = -1)
      options(scipen = 999)
      options(digits = 3)


      # R4DS第一章 ggplot2包与数据可视化
      # 准备工作
      library(tidyverse)

      # 数据可视化的流程
      # 提问题--找数据--选图形--做图形--得信息--导行动
      # 例如:想了解引擎尺寸和燃油效率的关系?
      # 正向还是负向;线性还是非线性?

      # 使用自带的mpg数据库
      data(mpg)
      mpg %>% glimpse()
      mpg %>% head
      help(mpg)

      # 找到数据集,需要寻找或者构建与问题相关的变量或者特征
      # 1)displ 引擎的尺寸
      # 2)hwy 燃油效率 每加仑油对应的行驶距离 相同距离下,高效率相对于低效率需要更少的油

      # 绘制图形
      # 探索两个变量之间的关系
      # 变量数目:2个
      # 变量类型:连续型
      # 采用散点图
      # 根据变量的类型和数目,选择合适的图形
      # 坐标轴 x--displ  y--hwy

      ggplot(data = mpg) +
        geom_point(aes(x = displ, y = hwy))

      ggplot(data = mpg, aes(x = displ, y = hwy)) +
        geom_point() +
        geom_smooth(method = 'lm', se = FALSE)

      ggplot(data = mpg, aes(x = displ, y = hwy)) +
        geom_point() +
        geom_smooth(method = 'lm', se = FALSE) +
        theme_classic()

      # 必要三组件
      # 1)数据集
      # 2)几何图形对象
      # 3)映射关系,变量映射到坐标轴、尺寸、颜色、透明度等
      # 通用模板
      # ggplot(data = <DATA>) +
      #   <GEOM_FUNCTION>(mapping = aes(<MAPPING>))

      # 练习1
      ggplot(data = mpg)
      mpg %>% glimpse()
      ?mpg
      ggplot(data = mpg) +
        geom_point(aes(x = cyl, y = hwy))

      ggplot(data = mpg) +
        geom_point(aes(x = drv, y = class))

      # 思考:
      # 一幅简洁的图能够带来什么信息?
      # 差异化标识
      ggplot(data = mpg) +
        geom_point(aes(x = displ, y = hwy, color = class))

      # 分面板观察
      ggplot(data = mpg) +
        geom_point(mapping = aes(x = displ, y = hwy)) +
        facet_wrap(~ class, nrow = 2)

      ggplot(data = mpg) +
        geom_point(mapping = aes(x = displ, y = hwy)) +
        facet_grid(drv ~ cyl)

      ggplot(data = mpg) +
        geom_point(mapping = aes(x = displ, y = hwy)) +
        facet_grid(. ~ cyl)

      ggplot(data = mpg) +
        geom_point(mapping = aes(x = displ, y = hwy)) +
        facet_grid(drv ~ .)

      # 不同的画图几何对象
      ggplot(data = mpg) +
        geom_point(mapping = aes(x = displ, y = hwy))

      ggplot(data = mpg) +
        geom_smooth(mapping = aes(x = displ, y = hwy))

      ggplot(data = mpg) +
        geom_smooth(mapping = aes(x = displ, y = hwy, linetype = drv))

      ggplot(data = mpg) +
        geom_point(mapping = aes(x =displ, y = hwy, color = drv)) + 
        geom_smooth(mapping = aes(x = displ,  
                                  y = hwy, 
                                  linetype = drv,
                                  color = drv))

      # 添加趋势线
      ggplot(data = mpg) +
        geom_smooth(mapping = aes(x = displ, y = hwy))

      ggplot(data = mpg) +
        geom_smooth(mapping = aes(x = displ, 
                                  y = hwy,
                                  group = drv))

      ggplot(data = mpg) +
        geom_smooth(mapping = aes(x = displ, 
                                  y = hwy,
                                  color = drv),
                    show.legend = FALSE)

      ggplot(data = mpg) +
        geom_point(mapping = aes(x = displ, y = hwy)) +
        geom_smooth(mapping = aes(x = displ, y = hwy))

      ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) +
        geom_point() +
        geom_smooth()

      ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) +
        geom_point(mapping = aes(color = class)) +
        geom_smooth()

      ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) +
        geom_point(mapping = aes(color = class)) +
        geom_smooth(
          data = filter(mpg, class == "subcompact"),
          se = FALSE

        )

      # 统计变换
      ggplot(data = diamonds) +
        geom_bar(mapping = aes(x = cut))

      ggplot(data = diamonds) +
        stat_count(mapping = aes(x = cut))


      # 参数stat明示化的3种情况
      # 构造数据集
      demo <- tribble(
        ~a,     ~b,
        "bar_1", 20,
        "bar_2", 30,
        "bar_3", 40
      )

      ggplot(data = demo) +
        geom_bar(
          mapping = aes(x = a, y = b),
         stat='identity'
        )

      # 绘制每一组的百分比
      ggplot(data = diamonds) +
        geom_bar(
          mapping = aes(x = cut, y = ..prop.., group = 1)
        )

      # 统计图形可视化
      ggplot(data = diamonds) +
        stat_summary(
          mapping = aes(x = cut, y = depth),
          fun.min = min,
          fun.max = max,
          fun = median
        )

      # 位置调整
      ggplot(data = diamonds) +
        geom_bar(mapping = aes(x = cut, color = cut))

      ggplot(data = diamonds) +
        geom_bar(mapping = aes(x = cut, fill = cut))

      ggplot(data = diamonds) +
        geom_bar(mapping = aes(x = cut, fill = clarity))

      ggplot(
        data = diamonds,
        mapping = aes(x = cut, fill = clarity)
      ) +
        geom_bar(alpha = 1/5, position = 'identity')


      ggplot(
        data = diamonds,
        mapping = aes(x = cut, color = clarity)
      ) +
        geom_bar(fill = NA, position = 'identity')

      ggplot(
        data = diamonds
      ) + 
        geom_bar(
          mapping = aes(x = cut, fill = clarity),
          position = 'fill'
        )

      ggplot(
        data = diamonds
      ) + geom_bar(
        mapping = aes(x = cut, fill = clarity),
        position = "dodge"
      )

      ggplot(
        data = mpg
      ) + geom_point(
        mapping = aes(x = displ, y = hwy),
        position = "jitter"
      )

      # 坐标系统
      ggplot(data = mpg, mapping = aes(x = class, y = hwy)) +
        geom_boxplot()

      ggplot(data = mpg, mapping = aes(x = class, y = hwy)) +
        geom_boxplot() +
        coord_flip()

      nz <- map_data("nz")
      ggplot(nz, aes(long, lat, group = group)) +
        geom_polygon(fill = "white", color = "black")

      ggplot(nz, aes(long, lat, group = group)) +
        geom_polygon(fill = "white", color = "black") +
        coord_quickmap()

      bar <- ggplot(data = diamonds) +
        geom_bar(
          mapping = aes(x = cut, fill = cut),
          show.legend = FALSE,
          width = 1
        ) + 
        theme(aspect.ratio = 1) +
        labs(x = NULL, y = NULL)

      bar + coord_flip()
      bar + coord_polar()


      6 部分结果展示(大家可以自测代码)

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化


      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化


      07 

      可重复性代码构建指南


      创建项目工程,做项目管理

      项目的层级架构,参考下图:

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化


      各个文件夹和文件的用途

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化


      请注意

      1 永远不要修改原始数据,或者说,一定要备份好原始数据

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化


      2 对于任何项目,创建一个文件,记录你的所思和所做,便于复盘和迭代

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化


      3 脚本的命名,请知名晓意,赋予含义,具有条理性和逻辑性,重视代码的可读性,代码是让电脑来运行的,更重要的是,让人来看的。

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化


      4 对于一个复杂的项目,编写代码之前,先写伪代码或者画流程图

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化


      08 

      md5加密


      实际工作中,有时候需要抽取内部数据与第三方数据做撞库操作。这个时候,需要把敏感信息,比方说,身份证号码、手机号码、姓名做加密处理,常用md5加密。


      digest包的digest函数,可以方便地进行md5加密。

      library(diges)
      id1 <- "1234567890"
      id1
      id1_md5 <- digest(id1, algo = "md5", serialize = FALSE)
      id1_md5


      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化


      补充信息

      源自:https://github.com/BaHui/MD5Hash

      MD5加密是最常用的不可逆加密方法之一,是将字符串通过相应特征生成一段32位的数字字母混合码。对输入信息生成唯一的128位散列值(32个16进制的数字)

      但是常见的会有16位和32位长度之分, 实际上MD5产生的就是唯一的32位的长度, 所谓的16位的长度可以理解为对MD5的再加工而形成的. 再加工就是: 32 位字符串中,取中间的第 9 位到第 24 位的部分


      09 

      dplyr包across函数


      dplyr包across函数,把一个函数或者一系列函数应用到一些具有某种模式下的列做处理。


      # dplyr包across函数
      library(dplyr)
      library(magrittr)
      help(package = 'dplyr')

      iris %>% 
        group_by(Species) %>% 
        summarise(across(starts_with("Sepal"), mean), .groups = "drop") %>% 
        View


      iris %>% 
        group_by(Species) %>% 
        summarise(across(starts_with("Sepal"), list(mean = mean, sd = sd)), .groups = "drop") %>% 
        View


      结果表


      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化

      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化




      我创建了R语言群,添加我的微信,备注:姓名-入群,我邀请你进群,一起学习R语言。


      R语言学习:R4DS学习、6种join操作理解、case_when函数理解、ggplot2包做数据可视化



      如果你觉得文章内容有用,请关注下方公众号~



      如果你想找数据工作,请关注下方公众号~

      R语言学习专辑:

      2021年第38周:R语言学习

      2021年第37周:R语言学习

      2021年第36周:R语言学习

      2021年第35周:R语言学习

      2021年第34周:R语言学习

      觉得本文不错,就顺手帮我转发到朋友圈和微信群哦,谢谢。

      测试结尾

      请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!

      • 分享:
      作者头像
      weinfoadmin

      上一篇文章

      ggplot 绘制三角形相关性图
      2021年9月29日

      下一篇文章

      怎么在 UCSC 官网下载基因组和注释文件?
      2021年9月30日

      你可能也喜欢

      3-1665801675
      R语言学习:重读《R数据科学(中文版)》书籍
      28 9月, 2022
      6-1652833487
      经典铁死亡,再出新思路
      16 5月, 2022
      1-1651501980
      R语言学习:阅读《R For Everyone 》(第二版)
      1 5月, 2022

      搜索

      分类

      • R语言
      • TCGA数据挖掘
      • 单细胞RNA-seq测序
      • 在线会议直播预告与回放
      • 数据分析那些事儿分类
      • 未分类
      • 生信星球
      • 老俊俊的生信笔记

      投稿培训

      免费

      alphafold2培训

      免费

      群晖配置培训

      免费

      最新博文

      Nature | 单细胞技术揭示衰老细胞与肌肉再生
      301月2023
      lncRNA和miRNA生信分析系列讲座免费视频课和课件资源包,干货满满
      301月2023
      如何快速批量修改 Git 提交记录中的用户信息
      261月2023
      logo-eduma-the-best-lms-wordpress-theme

      (00) 123 456 789

      weinfoadmin@weinformatics.cn

      恒诺新知

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      链接

      • 课程
      • 事件
      • 展示
      • 问答

      支持

      • 文档
      • 论坛
      • 语言包
      • 发行状态

      推荐

      • iHub汉语代码托管
      • iLAB耗材管理
      • WooCommerce
      • 丁香园论坛

      weinformatics 即 恒诺新知。ICP备案号:粤ICP备19129767号

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      要成为一名讲师吗?

      加入数以千计的演讲者获得100%课时费!

      现在开始

      用你的站点账户登录

      忘记密码?

      还不是会员? 现在注册

      注册新帐户

      已经拥有注册账户? 现在登录

      close
      会员购买 你还没有登录,请先登录
      • ¥99 VIP-1个月
      • ¥199 VIP-半年
      • ¥299 VIP-1年
      在线支付 激活码

      立即支付
      支付宝
      微信支付
      请使用 支付宝 或 微信 扫码支付
      登录
      注册|忘记密码?