• 主页
  • 课程

    关于课程

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

    同等学历教学

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

      关于课程

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

      同等学历教学

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

      R语言

      • 首页
      • 博客
      • R语言
      • 使用dplyr进行数据操作(30个实例)

      使用dplyr进行数据操作(30个实例)

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

      dplyr软件包是R中功能最强大,最受欢迎的软件包之一。该软件包由最受欢迎的R程序员Hadley Wickham编写,他编写了许多有用的R软件包,如ggplot2,tidyr等。本文包括一些示例和如何使用使用dplyr软件包来清理和转换数据。这是一个关于数据操作和数据处理的完整教程。

      什么是dplyr?

      dplyr是一个强大的R软件包,用于处理,清理和汇总非结构化数据。简而言之,它使得R中的数据探索和数据操作变得简单快捷。

      使用dplyr进行数据操作(30个实例)

      dplyr有什么特别之处?

      软件包“dplyr”包含许多主要使用的数据操作功能,例如应用过滤器,选择特定列,排序数据,添加或删除列以及聚合数据。这个包的另一个最重要的优点是学习和使用dplyr函数非常容易。也很容易回想起这些功能。例如,filter()用于过滤行。

      dplyr与基本R函数

      dplyr函数处理速度比基本R函数快。 这是因为dplyr函数是以计算有效的方式编写的。 它们在语法上也更稳定,并且比向量更好地支持数据帧。

      SQL查询与dplyr

      数十年来人们一直在使用SQL来分析数据。 每个现代数据分析软件如Python,R,SAS等都支持SQL命令。 但SQL从未被设计为执行数据分析。 它专为查询和管理数据而设计。 有许多数据分析操作在SQL失败或使简单的事情困难。 例如,计算多个变量的中位数,将宽格式数据转换为长格式等。而dplyr软件包的设计目的是进行数据分析。

      dplyr函数的名称类似于SQL命令,如用于选择变量的select(),group_by() – 通过对变量进行分组来组合数据,join() – 将两个数据集合在一起。 还包括inner_join()和left_join()。 它也支持SQL常用的子查询。

      如何安装和加载dplyr软件包

      要安装dplyr软件包,请键入以下命令。

      1. install.packages("dplyr")

      要加载dplyr包,请在下面输入命令

      1. library(dplyr)

      常用的dplyr的函数

      使用dplyr进行数据操作(30个实例)

      数据:各国的收入数据

      在本教程中,我们使用以下数据,其中包含2002年至2015年各州产生的收入。注意:此数据不包含各州的实际收入数据。

      该数据集包含51个观测值(行)和16个变量(列)。 下面显示了数据集前6行的快照。

      数据集下载链接(密码:9ny3)

      如何加载数据

      提交以下代码。 在下面的代码中更改文件路径。

      1. mydata <- read.csv("D:/datasets/sampledata.csv")

      实例1:随机选择N行

      sample_n函数从数据框(或表)中随机选择行。 函数的第二个参数告诉R要选择的行数。

      1. sample_n(mydata, 3)

      使用dplyr进行数据操作(30个实例)

      实例2:随机选择总行的N%

      sample_frac函数随机返回N%的行。 在下面的例子中,它随机返回10%的行。

      1. sample_frac(mydata, 0.1)

      实例3:基于所有变量(完整行)删除重复行

      distinct函数用于消除重复行

      1. x1 <-  dplyr::distinct(mydata)

      在此数据集中,没有单个重复行,因此返回的行数与mydata中的行数相同。

      实例4:基于单个变量删除重复行

      .keep_all函数用于保留输出数据框中的所有其他变量。

      1. x2 <- dplyr::distinct(mydata, Index, .keep_all= TRUE)

      实例5:基于多个变量删除重复行

      在下面的例子中,我们使用两个变量 – Index,Y2010来确定唯一性。

      1. x3 <-  dplyr::distinct(mydata, Index, Y2010, .keep_all= TRUE)

      实例6:选择变量(或列)

      假设你被要求只选择几个变量。 下面的代码选择变量“Index”,从“State”到“Y2008”的列。

      1. mydata2 <- select(mydata, Index, State:Y2008)

      实例7:删除变量

      变量前面的减号表示R放弃变量。

      1. mydata3 <- select(mydata, -Index, -State)

      上面的代码也可以写成:

      1. mydata4 <- select(mydata, -c(Index, State))

      实例8:选择或删除以”Y”开始的变量

      starts_with()函数用于选择以字母开头的变量。

      1. mydata5 <- select(mydata, starts_with('Y'))

      在starts_with()之前添加一个负号表示将删除以’Y’开始的变量

      1. mydata6 <- select(mydata, -starts_with('Y'))

      以下函数可帮助您根据名称选择变量。
      使用dplyr进行数据操作(30个实例)

      实例9:选择变量名中包含”l”的变量

      1. mydata7 <- select(mydata, contains('l'))

      实例10:重新排列变量

      下面的代码保持变量’State’在前面,其余的变量跟随其后。

      1. mydata8 <- select(mydata, State, everything())

      实例11:变量重命名

      rename函数可用于重命名变量。
      在下面的代码中,我们将’Index’变量重命名为’Index1’。

      1. mydata9 <- rename(mydata, Index1=Index)

      2. names(mydata9)

      使用dplyr进行数据操作(30个实例)

      实例12:选择行

      假设你需要子集数据。 您想过滤行并仅保留Index等于A的那些值。

      1. mydata10 <- filter(mydata, Index == "A")

      实例13:多重选择标准

      %in%运算符可用于选择多个项目。 在下面的程序中,我们告诉R选择Index列中的’A’和’C’行。

      1. mydata11 <- filter(mydata, Index %in% c("A", "C"))

      实例14:选择标准中的’AND’条件

      假设你需要应用’AND’条件。 在这种情况下,我们在“索引”栏中选择’A’和’C’的数据,并在2002年收入超过130万美元。

      1. mydata12 <- filter(mydata, Index %in% c("A", "C") & Y2002 >= 1300000 )

      实例15:选择标准中的’OR’条件

      ‘|’表示逻辑条件中的或。 它意味着这两个条件中的任何一个。

      1. mydata13 <- filter(mydata, Index %in% c("A", "C") | Y2002 >= 1300000)

      实例16:非条件

      “!” 符号用于反转逻辑条件。

      1. mydata13 <- filter(mydata, !Index %in% c("A", "C"))

      实例17:包含条件

      grepl函数用于搜索模式匹配。 在下面的代码中,我们正在查找state列包含“Ar”的记录。

      1. mydata14 <- filter(mydata, grepl("Ar", State))

      实例18:总结选定的变量

      在下面的例子中,我们计算了变量Y2015的平均值和中位数。

      1. summarise(mydata, Y2015_mean = mean(Y2015), Y2015_med=median(Y2015))

      实例19:总结多个变量

      在下面的例子中,我们计算了记录的数量,变量Y2005和Y2006的平均值和中位数。 summarise_at函数允许我们通过名称选择多个变量。

      1. summarise_at(mydata, vars(Y2005, Y2006), funs(n(), mean, median))

      实例20:用自定义函数进行总结

      我们也可以在汇总功能中使用自定义函数。 在这种情况下,我们计算记录数,缺失值的数量,变量Y2011和Y2012的平均数和中位数。 点(.)表示函数的第二个参数中指定的每个变量。

      1. summarise_at(mydata, vars(Y2011, Y2012),

      2.             funs(n(), missing = sum(is.na(.)),

      3.             mean(., na.rm = TRUE),

      4.             median(.,na.rm = TRUE)))

      实例21:总结所有的数字变量

      summarise_if函数允许您有条件地总结。

      1. summarise_if(mydata, is.numeric, funs(n(),mean,median))

      或者

      1. numdata <- mydata[sapply(mydata,is.numeric)]

      2. summarise_all(numdata, funs(n(),mean,median))

      实例22:总结因子变量

      我们正在检查分类(因子)变量中的级别/类别数量和缺失观察数量。

      1. summarise_all(mydata["Index"], funs(nlevels(.), nmiss=sum(is.na(.))))

      实例23:按多个变量排序数据

      arrange()函数的默认排序顺序是递增的。 在这个例子中,我们通过多个变量来排序数据。

      1. arrange(mydata, Index, Y2011)

      假设你需要按降序对其中一个变量进行排序,而对其他变量则按升序排序。

      1. arrange(mydata, desc(Index), Y2011)

      实例24:按分类变量汇总数据

      我们通过变量Index计算变量Y2011和Y2012的变量的计数和均值。

      1. t <- summarise_at(group_by(mydata, Index), vars(Y2011, Y2012), funs(n(), mean(., na.rm = TRUE)))

      或者

      1. t <- mydata %>% group_by(Index) %>%

      2.  summarise_at(vars(Y2011:Y2015), funs(n(), mean(., na.rm = TRUE)))

      实例25:过滤分类变量中的数据

      假设您需要从“A”,“C”和“I”类别的变量索引中抽取前两行。

      1. t <- mydata %>% filter(Index %in% c("A", "C","I")) %>% group_by(Index) %>%

      2.  do(head( . , 2))

      实例26:通过分类变量选择第三最大值

      我们正在通过变量Index计算变量Y2015的第三个最大值。 以下代码首先仅选择两个变量Index和Y2015。 然后它用’A’,’C’和’I’过滤变量索引,然后对变量进行分组,然后按降序对变量Y2015进行排序。 最后,它选择第三行。

      1. t <- mydata %>%

      2.  select(Index, Y2015) %>%

      3.  filter(Index %in% c("A", "C","I")) %>%

      4.  group_by(Index) %>%

      5.  do(arrange(.,desc(Y2015))) %>%  

      6.  slice(3)

      像SQL一样,dplyr使用窗口函数来将数据分组。 它返回值的向量。 我们可以使用min_rank()函数来计算上例中的rank,

      1. t <- mydata %>% select(Index, Y2015) %>%

      2.  filter(Index %in% c("A", "C","I")) %>%

      3.  group_by(Index) %>%

      4.  filter(min_rank(desc(Y2015)) == 3)

      实例27:总结,分组和排序

      在这种情况下,我们通过变量Index来计算变量Y2014和Y2015的均值。 然后通过计算的变量Y2015的均值对结果进行排序。

      1. t <- mydata %>%

      2.  group_by(Index)%>%

      3.  summarise(Mean_2014 = mean(Y2014, na.rm=TRUE),

      4.            Mean_2015 = mean(Y2015, na.rm=TRUE)) %>%

      5.  arrange(desc(Mean_2015))

      实例28:创建一个新变量

      以下代码用变量Y2015除以Y2014的的值其命名为“change”。

      1. mydata15 <- mutate(mydata, change=Y2015/Y2014)

      实例29:将所有变量乘以1000

      它创建新的变量并用后缀“_new”命名。

      1. mydata11 <- mutate_all(mydata, funs("new" = .* 1000))

      实例30:计算变量的排名

      假设您需要计算变量Y2008至Y2010的排名。

      1. mydata17 <- mutate_at(mydata, vars(Y2008:Y2010), funs(Rank=min_rank(.)))

      您在阅读中,有什么见解,请评论。

      链接:https://www.listendata.com/2016/08/dplyr-tutorial.html
      版权声明:作者保留权利,严禁修改,转载请注明原文链接。

      关于更多数据科学内容,请阅读R语言系列文章。

      数据人网是数据人学习、交流和分享的平台http://shujuren.org 。专注于从数据中学习到有用知识。
      平台的理念:人人投稿,知识共享;人人分析,洞见驱动;智慧聚合,普惠人人。
      您在数据人网平台,可以1)学习数据知识;2)创建数据博客;3)认识数据朋友;4)寻找数据工作;5)找到其它与数据相关的干货。
      我们努力坚持做原创,聚合和分享优质的省时的数据知识!
      我们都是数据人,数据是有价值的,坚定不移地实现从数据到商业价值的转换!


      【R语言】公众号,诚邀各位数据人投稿,您可以原创,也可以翻译,小编微信:luqin360,等候您。


      点击阅读原文,进入数据人网,学习数据知识。




      数据人网(http://shujuren.org)诚邀各位数据人来平台分享和传播优质数据知识。



      公众号推荐:

      360区块链,专注于360度分享区块链内容。

      使用dplyr进行数据操作(30个实例)

          脚印英语,专注于分享实用口语内容。

      使用dplyr进行数据操作(30个实例)





      测试结尾

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

      • 分享:
      作者头像
      weinfoadmin

      上一篇文章

      【知识】用R语言编码理解区块链
      2018年4月15日

      下一篇文章

      【数据故事】使用ggplot2进行数据可视化
      2018年4月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年
      在线支付 激活码

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