• 主页
  • 课程

    关于课程

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

    同等学历教学

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

      关于课程

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

      同等学历教学

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

      R语言

      • 首页
      • 博客
      • R语言
      • 【数据整理】用dplyr包进行数据操作

      【数据整理】用dplyr包进行数据操作

      • 发布者 weinfoadmin
      • 分类 R语言
      • 日期 2016年2月4日
      测试开头

      dplyr包是由Hadely Wickham编写的,并用于数据操作的包。这个包给我们用户提供了一个关于探索性数据分析以及操作中,一些功能强大,而且容易操作的函数的一个程序包。这里,我会讲述几个关于dplyr包里最常用的几个函数。

      在这篇文章中,我会使用来自database这个程序包里的airquality这个数据集,而这个数据集包含了关于纽约1973年5月到1973年9月中关于空气质量测量的相关信息。下面,我们先来简单的预览一下这个数据集:

      head(airquality)

        Ozone Solar.R Wind Temp Month Day

      1    41    190  7.4   67    5   1

      2    36    118  8.0   72    5   2

      3    12    149 12.6   74     5  3

      4    18    313 11.5   62     5  4

      5    NA     NA 14.3   56     5  5

      6    28     NA 14.9   66     5  6

       

      在使用相关函数之前,我们首先要安装好这两个包:

      library(datasets)
      library(dplyr)

       

      好了,我们现在就开始使用里面的函数吧。

       

      Filter

      Filter函数可返回满足所有给定条件的行。例如,一下的例子将要返回满足Temp>70的所有行:

      filter(airquality, Temp > 70)
        Ozone Solar.R Wind Temp Month Day
      1    36     118  8.0   72     5   2
      2    12     149 12.6   74     5   3
      3     7      NA  6.9   74     5  11
      4    11     320 16.6   73     5  22
      5    45     252 14.9   81     5  29
      6   115     223  5.7   79     5  30
      ...
       

       

      另一个条件则是返回满足Temp>80以及五月以后的所有行:

      filter(airquality, Temp > 80 & Month > 5)
        Ozone Solar.R Wind Temp Month Day
      1    NA     286  8.6   78     6   1
      2    NA     287  9.7   74     6   2
      3    NA     186  9.2   84     6   4
      4    NA     220  8.6   85     6   5
      5    NA     264 14.3   79     6   6
      ...

       

      Mutate

      Mutate函数可对现有的数据集添加新的变量。例如,我们现在对airquality这个数据集添加一个关于摄氏度的列,结果如下:

      mutate(airquality, TempInC = (Temp - 32) * 5 / 9)
        Ozone Solar.R Wind Temp Month Day  TempInC
      1    41     190  7.4   67     5   1 19.44444
      2    36     118  8.0   72     5   2 22.22222
      3    12     149 12.6   74     5   3 23.33333
      4    18     313 11.5   62     5   4 16.66667
      5    NA      NA 14.3   56     5   5 13.33333
      ...

       

      Summarise

      Summarise函数可用于把多个变量汇总成一个变量。当调用这个在dplyr包里的函数用于把其它函数连接起来的时候功能是非常强大的,而后面就会给大家展示。na.rm=TRUE表示把数据集里的空值清除掉,如果我们要计算每个月平均温度时就要用到这个参数了,过程如下:

      summarise(group_by(airquality, Month), mean(Temp, na.rm = TRUE))
        Month mean(Temp)
      1     5   65.54839
      2     6   79.10000
      3     7   83.90323
      4     8   83.96774
      5     9   76.90000

       

      Group by

      Group_by函数可作用于一个数据集中一个或多个变量中。下面,我们将在summarise函数里写入Group_by函数,并在里面添加mean函数以用于计算每个月的平均温度:

      summarise(group_by(airquality, Month), mean(Temp, na.rm = TRUE))
        Month mean(Temp)
      1     5   65.54839
      2     6   79.10000
      3     7   83.90323
      4     8   83.96774
      5     9   76.90000

       

      Sample

      Sample函数可用于选择一个数据集里的任意一行或多行的数据。下面的演示中,第一行代码是要在一个数据集中随机选取行,而第二行则从数据集中随机选取15行(因为airquality这个数据集中一共有153行,而153/10=15。

      sample_n(airquality, size = 10)
      sample_frac(airquality, size = 0.1)

       

      Count

      Count函数则是基于一组观测值计算里面的数量。它和table函数确实有一点相似之处,例如:

      count(airquality, Month)
        Month  n
      1     5 31
      2     6 30
      3     7 31
      4     8 31
      5     9 30

       

      上面的代码意味着5月包含31行,6月包含30行,以此类推。

       

      Arrange

      Arrange可用于根据不同的变量进行行的排列。现在,airquality这个数据集是根据月份已经日来排列的。我们可以使用Arrange函数对月份进行行的降序排列,然后对天进行升序排列:

      arrange(airquality, desc(Month), Day)
        Ozone Solar.R Wind Temp Month Day
      1    96     167  6.9   91     9   1
      2    78     197  5.1   92     9   2
      3    73     183  2.8   93     9   3
      4    91     189  4.6   93     9   4
      5    47      95  7.4   87     9   5
      6    32      92 15.5   84     9   6

       

      Pipe

      Pipe在R中的操作,由%>%表示,这个符号可以把代码串联起来。当你想要对一个数据集进行多种操作和不想在每个步骤中都进行结构的存储的时候,这个函数则能派上用场。

      例如,如果我们想要把与5月份相关的数据全部移除的时候,并且我们还要对数据进行聚集操作,同时还要计算每个月的平均气温时,我们就需要Pipe。而传统的方法进行上述操作的写法如下:

      filteredData <- filter(airquality, Month != 5)
      groupedData <- group_by(filteredData, Month)
      summarise(groupedData, mean(Temp, na.rm = TRUE))

       

      用Pipe函数的话,写法如下:

      airquality %>% 
          filter(Month != 5) %>% 
          group_by(Month) %>% 
          summarise(mean(Temp, na.rm = TRUE))

       

      上面的例子是非常基础的,而且效果看起来其实也并不是那么的明显,但是随着数据量的增大,或则使用函数的数量的增加,这个函数的用处将是越来越大。

      现在,我们已经来到文章的末尾了。我希望你能享受你现在使用这些函数的过程,而且也希望你觉得这篇文章对于你来说是有用的。如果你有什么问题,我希望你可以留言或者关注我的推特。

       

      原文链接:http://www.r-bloggers.com/data-manipulation-with-dplyr/

      何品言,热爱英语和数据科学。

      严禁修改,可以转载,请注明出自数据人网和原文链接:http://shujuren.org/index.php/Article/update/aid/152

      更多精彩内容,请点击阅读原文。

      数据人网(http://shujuren.org),数据人学习、交流和分享的家园,专注于从数据中学习,努力发觉数据之洞见,积极利用数据之价值。为“让人懂数据、用数据”之使命坚持做点事情。大家可以来投稿,做分享和传播,可以给反馈。您有什么想法,请反馈给我们,谢谢。数据人网,我们共建和共享。

      数据人网构建了数据人圈子,诚邀热爱数据和利用数据朋友入群。加小编微信:luqin360,注明入圈子。




      测试结尾

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

      • 分享:
      作者头像
      weinfoadmin

      上一篇文章

      【数据整理】R用reshape2包进行数据操作
      2016年2月4日

      下一篇文章

      【R语言】祝福、收获、感动和共享
      2016年2月8日

      你可能也喜欢

      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年
      在线支付 激活码

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