The d is for dataframes, the plyr is to evoke pliers. Pronounce however you like.

dplyr包可用于处理 R 内部或者外部的结构化数据,相较于plyr包,dplyr包专注接受 data.frame 对象,大幅提高了速度,并且提供了更稳健的数据库接口。同时,dplyr包可用于操作Spark的dataframe。

官网:https://cran.r-project.org/web/packages/dplyr/index.html

包中的函数查询:https://cran.r-project.org/web/packages/dplyr/dplyr.pdf

安装dplyr包

install.packages("dplyr")

使用dplyr包

library("dplyr")

dplyr包中的重要函数

-- 根据值选择相应的行   filter()

-- 对行重新排序  arrange()

-- 根据列名选择相应的列  select()

-- 根据已知的列创建新的列  mutate()

-- 将许多值塌缩为单个描述性汇总  summarize()

-- 分组 group_by()   这些函数都可以通过 group_by() 衔接起来,该函数改变上述每个函数的作用域,从操作整个数据集到按组与组进行操作。

使用 nycflights13包中的数据集

install.packages("nycflights13")

library("nycflights13")

使用 filter() 函数过滤

filter(flights, month == 1, day == 1)    # 过滤数据

filter(flights, month == 11 | month == 12)   # 逻辑或

filter(flights, month %in% c(11, 12))  # %in% 判断是否存在;该语句可以替换上面的语句

使用 arrange() 函数对行重新排序

arrange(flights, desc(arr_delay))    # 按照列 arr_delay 进行降序排列

使用 select() 函数选择指定列

select(flights, year, month, day)    # 选择列 year  month  day

select(flights, year:day)     # 选择 year 和 day 之间的所有列

select(flights, -(year:day))    # 反向选择 选择 year 和 day 之间的所有列以外的所有列

select(flights, starts_with("yea"))    # 选择列名以 "yea" 开头的列

select(flights, ends_with("ear"))    # 选择列名以 "ear" 结尾的列

select(flights, contains("ea"))    # 选择列名中包含 "ea" 的列

select(flights, matches("ea"))    # 使用正则表达式  选择列名中匹配到 "ea" 的列

select(flights, num_range("x", 1:3))    # 使用正则表达式  选择列名中匹配到 "x1" "x2" "x3" 的列

select(flights, time_hour, air_time, everything())    # 将 time_hour列 和 air_time列 提到前面

查看 select() 函数的更多内容 ?select()

rename(flights, tail_num = tailnum)     # 将列名 tailnum 改为 tail_num

mutate(flights_sml, gain = arr_delay - dep_delay, speed = distance / air_time * 60 )     #  在原数据集flights_sml的基础上添加两列 gain, speed 产生一个新的数据集,原数据集不变。

transmute(flights, gain = arr_delay - dep_delay, hours = air_time / 60, gain_per_hour = gain / hours)    # 只生成新的3列 gain, hours, gain_per_hour,输出结果中没有元数据集

transmute(flights, dep_time, hour = dep_time %/% 100, minute = dep_time %% 100)    #  %/% 整除运算;  %% 取余运算

使用 summarise() 函数对数据进行描述性汇总 结果只输出指定的类

常与 group_by() 一起使用 从而实现将数据分组后再统计

summarize(flights, delay = mean(dep_delay, na.rm = TRUE))      #

by_day <- group_by(flights, year, month, day)

summarize(by_day, delay = mean(dep_delay, na.rm = TRUE))

not_cancelled <- flights %>% filter(!is.na(dep_delay), !is.na(arr_delay))     # 使用管道操作

not_cancelled %>% group_by(year, month, day) %>% summarize(mean = mean(dep_delay))    # 使用管道操作

delays %>% filter(n > 25) %>% ggplot(mapping = aes(x = n, y = delay)) + geom_point(alpha = 1/10)

batting <- as_tibble(Lahman::Batting)

batting %>% group_by(playerID) %>% summarize(ba = sum(H, na.rm = TRUE) / sum(AB, na.rm = TRUE), ab = sum(AB, na.rm = TRUE)) %>% filter(ab > 100) %>% ggplot(mapping = aes(x = ab, y = ba)) + geom_point() + geom_smooth(se = FALSE)     # 分组 > 汇总 > 过滤 > 绘图

not_cancelled %>% group_by(dest) %>% summarize(carriers = n_distinct(carrier)) %>% arrange(desc(carriers))    # 分组 > 汇总 > 降序排列

not_cancelled %>% group_by(year, month, day) %>% summarize(avg_delay1 = mean(arr_delay), avg_delay2 = mean(arr_delay[arr_delay > 0]))    #  分组 > 汇总

not_cancelled %>% group_by(dest) %>% summarize(distance_sd = sd(distance)) %>% arrange(desc(distance_sd))    # 分组 > 汇总 > 降序排列

not_cancelled %>% group_by(year, month, day) %>% summarize( first = min(dep_time), last = max(dep_time))    #  分组 > 汇总(取每一组的最大值和最小值)

dplyr的更多相关文章

  1. R语言数据处理包dplyr、tidyr笔记

    dplyr包是Hadley Wickham的新作,主要用于数据清洗和整理,该包专注dataframe数据格式,从而大幅提高了数据处理速度,并且提供了与其它数据库的接口:tidyr包的作者是Hadley ...

  2. R语言数据处理利器——dplyr简介

    dplyr是由Hadley Wickham主持开发和维护的一个主要针对数据框快速计算.整合的函数包,同时提供一些常用函数的高速写法以及几个开源数据库的连接.此包是plyr包的深化功能包,其名字中的字母 ...

  3. dplyr包--数据操作与清洗

    1.简介 在我们数据分析的实际应用中,我们可能会花费大量的时间在数据清洗上,而如果使用 R 里面自带的一些函数(base 包的 transform 等),可能会觉得力不从心,或者不是很人性化.好在我们 ...

  4. dplyr 数据操作 常用函数(5)

    继续来了解dplyr中的其他有用函数 1.sample() 目的是可以从一个数据框中,随机抽取一些行,然后组成新的数据框. sample_n(tbl, size, replace = FALSE, w ...

  5. dplyr 数据操作 常用函数(4)

    接下来我们继续了解一些dplyr中的常用函数. 1.ranking 以下各个函数可以实现对数据进行不同的排序 row_number(x) ntile(x, n) min_rank(x) dense_r ...

  6. dplyr 数据操作 常用函数(3)

    接下了我们继续了解dplyr中有用的函数 1.if_else() if_else主要用于在数据做判断用 x<-data.frame(id=1:6, name=c("wang" ...

  7. dplyr 数据操作 常用函数(1)

    上面介绍完dplyr中,几个主要的操作函数后,我们再进一步了解dplyr中那些函数可能我们会经常要用到. 这里主要根据dplyr包作者的书籍目录来把它列出来. 1.add_rownames 添加行名称 ...

  8. dplyr 数据操作 统计描述(summarise)

    在R中,summary()是一个基础包中的重要统计描述函数,同样的在dplyr中summarise()函数也可以对数据进行统计描述. 不同的是summarise()更加的灵活多变,下面来看下summa ...

  9. dplyr 数据操作 列操作(select / mutate)

    在R中,我们通常需要对数据列进行各种各样的操作,比如选取某一列.重命名某一列等. dplyr中的select函数子在数据列的操作上也同样表现了它的简洁性,而且各种操作眼花缭乱. select(.dat ...

  10. dplyr 数据操作 数据排序 (arrange)

    在R中,我们在整理数据时,经常需要对数据排序,以便数据增强数据的可读性. 下面我们来看下dplyr中的,arrange函数 arrange(.data, ...) 跟filter()类似,arrang ...

随机推荐

  1. Gearman介绍、原理分析、实践改进

    gearman是什么? 它是分布式的程序调用框架,可完成跨语言的相互调用,适合在后台运行工作任务.最初是2005年perl版本,2008年发布C/C++版本.目前大部分源码都是(Gearmand服务j ...

  2. MySQL之命令行简单操作MySQL(二)

    一:命令行连接数据库 打开终端,运行命令mysql -uroot -p (p后面加密码,可以直接加,也可以回车在下一行输入,为了不暴露密码,回车在下行输入 退出:exit或quit 查看版本信息: s ...

  3. Python删除列表元素的3种方法

    之前看教程的时候比较着急,对这些基础掌握不好,过来回顾一下 使用del语句删除 lis = [1, 2, 3, 'a', 'b'] print(lis) del lis[0] print(lis) 输 ...

  4. Django---ORM的常用字段和自定义字段,DjangoORM字段与数据库类型对应,字段参数和Meta的参数,Django的admin操作,13中orm操作方法,单标的双下方法

    Django---ORM的常用字段和自定义字段,DjangoORM字段与数据库类型对应,字段参数和Meta的参数,Django的admin操作,13中orm操作方法,单标的双下方法 一丶ORM常用字段 ...

  5. ASP.NET Core中返回 json 数据首字母大小写问题

    ASP.NET Core中返回 json 数据首字母大小写问题 在asp.net core中使用ajax请求动态绑定数据时遇到该问题 后台返回数据字段首字母为定义的大写,返回的数据没有问题 但是在前台 ...

  6. 纯css无js实现点击事件

    <input id="A" type="checkbox"><label for="A"> <span cla ...

  7. Win10下免安装版MySQL8.0.16的安装和配置

    1.MySQL8.0.16解压 其中dada文件夹和my.ini配置文件是解压后手动加入的,如下图所示 2.新建配置文件my.ini放在D:\Free\mysql-8.0.16-winx64目录下 [ ...

  8. Huffman Tree (哈夫曼树学习)

    WPL 和哈夫曼树 哈夫曼树,又称最优二叉树,是一棵带权值路径长度(WPL,Weighted Path Length of Tree)最短的树,权值较大的节点离根更近. 首先介绍一下什么是 WPL,其 ...

  9. Unity历史版本的文档

    前言 在我们的开发过程中,如果要查找Unity文档,通常会有以下两种方式: 1. 打开Unity的官网,查找文档 2. 查找本地安装的Unity文档 但是Unity官网上的文档,总是当前最新版本的文档 ...

  10. SpringCloud2.0 Hystrix Feign 基于Feign实现断路器 基础教程(七)

    1.启动[服务中心]集群,工程名:springcloud-eureka-server 参考 SpringCloud2.0 Eureka Server 服务中心 基础教程(二) 2.启动[服务提供者]集 ...