R语言数据科学第五章:数据操作dplyr(上)

超级好用的dplyr, 让你从数据小白跨出一大步。

以下内容主要来自 R for data science 书第五章内容前半部分,主要讲几个基本命令(filterarrangeselectmutatesummarise)的操作。

1.载入需要的R包

library(tidyverse) #dplyr包已经被整合入tidyverse包
library(nycflights13) #载入这个包主要是用里面的示例数据做分析

2.使用命令

  • filter 按照条件过滤数据
  • arrange 排序
  • select 按照列名选择变量。功能强大,可使用正则表达式。
  • mutate 基于现有变量创造新变量
  • summarise 汇总统计数据,常和分组命令(groupby)一起使用

3.filter

过滤样本,可结合逻辑变量一起使用:

  • & 代表 和
  • | 代表 或
  • ! 代表 非
  • %in% 代表 是否被包含。 如1 %in% c(1,2)代表1是否包含于 c(1,2)。该命令会返回True。
#筛选出1月1号的航班
filter(flights, month==1, day==1)
#筛选出1月或2月的航班
filter(flights, month==1 | month==2)
#筛选出不在1月或2月的航班
filter(flights, !(month==1 | month==2))

4.arrange

排序。

  • 可按多个关键字排序,从前到后由主到次。
  • 默认升序,降序需要在排序变量外加desc,如:desc(month)
#按时间顺序由前到后排序
arrange(filter, year, month, day)
#按航班延误时间有多到少排序
arrange(flights, desc(arr_delay))

5.select

按变量名选择子数据框

  • 使用可以连续选取
  • 使用 -可删除指定变量
  • starts_with(), end_with(), contains()分别代表选取以指定字符开始、以指定字符结尾,包含指定字符的变量名。
  • matches()可使用正则表达式匹配变量名
#选取变量名以“d”开头的变量
select(flights, ends_with("d"))
#选取变量名以“time”结尾的变量
select(flights, ends_with("time"))
#选取变量名中包含“dep”的变量
select(flights, contains("time"))
#使用正则表达式选取变量名以“d”开头的变量
select(flights, matches("^d"))

关于正则表达式的概念,以后会详细讲解。

rename()可直接对变量重命名。如:
rename(flights, mon = month)

6.mutate

增加新的变量。可对已有变量进行数学计算后生成新变量。

# 使用航班到达时间减去航班出发时间生成航班运行时间变量。
mutate(flights, use_time = arr_time - dep_time)

transmute只保留新生成的变量。如:

transmute(flights, use_time = arr_time - dep_time)

7.summaries

获得变量的汇总统计结果(均值,最大值,最小值,方差等),常和groupby一起使用,获得不同分组的汇总统计结果

#计算航班平均延误时间
summarise(flights, mean(dep_delay, na.rm=TRUE))
#计算航班每月的平均延误时间
flights %>% group_by(month) %>% summarise( mean(dep_delay, na.rm=TRUE))

这里出现了一个新的符号%>%,是dplyr专用的。我们称之为管道符,功能类似于shell中的|,作用是讲前面的变量传递到后面使用。
这个功能最大的好处是减少代码运行过程中生成的中间变量

na.rm = TRUE 是R中常用的命令,在apply函数中也经常用到。作用是计算时不考虑缺失数据。

你可能感兴趣的:(R语言数据科学第五章:数据操作dplyr(上))