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))    #  分组 > 汇总(取每一组的最大值和最小值)

最新文章

  1. 移动WEB前端开发资源整合
  2. Memcached深度分析
  3. AJAX部分---对比js做日期的下拉选择 和 ajax做三级联动;
  4. MSSQL 获取汉字全拼 和 汉字首字母
  5. 微信web开发者工具调试
  6. &lt;audio&gt;使用2
  7. 什么时候会刷新备库控制文件refresh the standby database control file?
  8. 大话设计模式--委托--IOS
  9. 构建LVS-DR+Keepalive高可用集群
  10. .class文件查看
  11. Spring Data JPA入门
  12. windows + php + redis的安装
  13. bzoj1679
  14. springboot打包成war后部署项目出现异常 LifecycleException: Failed to start component
  15. 游戏服务器学习笔记 3———— firefly 的代码结构,逻辑
  16. QQ使用技巧
  17. POJ 1126
  18. python学习笔记4-内置函数、匿名函数、json处理
  19. JS开启浏览器全屏模式,需要手动触发
  20. leetcode刷刷刷

热门文章

  1. Java 8 New Features
  2. 2019-07-30 ThinkPHP文件上传
  3. Java 之 Set 接口
  4. JavaScript 之 navigator 对象
  5. AI面试-算法结构基础
  6. FastJson实现复杂对象序列化与反序列化
  7. Mac 提示错误”xcrun: error“
  8. org.apache.catalina.core.StandardService - Stopping service [Tomcat]
  9. Mybatis如何插入空字段
  10. Mac安装vscode IDE 撸nodejs代码