3.1使用的数据:nycflights13:flights 3.2 使用filter() 筛选行 Filter() 函数可以基于观测的值筛选出一个观测子集 筛选1月1日所有航班: [AppleScript] 纯文本查看 复制代码 filter(flights,month==1,day==1)
如果需要保存下新的数据框,则直接将filter赋值给一个变量
jan1<-filter(flights,month==1,day==1)
如果既输出也保存变量,则加括号
(jan1<-filter(flights,month==1,day==1))
3.2.1 比较运算符 比较运算符: >, >=, <, <=, !=, == 3.2.2 逻辑运算符 Filter中的多个参数由“与”组合 &:与 |:或
!:非
[AppleScript] 纯文本查看 复制代码 筛选11月或12月的航班
filter(flights,month==11|month==12)
x %in% y :选取出x是y中的一个值时的所有行
filter(flights,month%in%c(11,12))
3.2.3 缺失值 is.na(x) 确定一个值是否为缺失值
filter只能筛选出条件为TRUE的行,会排除条件为FALSE和NA的行,如果想保留缺失值,需指出 [AppleScript] 纯文本查看 复制代码 filter(df,is.na(x)|x>1)
3.3 使用arrange() 排列行
如果列名不只一个,就使用后面的列在前面排序的基础上排序 [AppleScript] 纯文本查看 复制代码 arrange(flights,year,month,day)
desc()可以按列进行降序排序
arrange(flights,desc(arr_delay))
缺失值总是排在最后
3.4使用select()选择列[AppleScript] 纯文本查看 复制代码 #按名称选择列[/align]select(flights,year,month,day)
#选择“year”和“day”之间的所有列
select(flights,year:day)
#选择不在“year"和"day"之间的所有列
select(flights,-(year:day))
select中的辅助函数:
starts_with(“abc”)
ends_with(“xyz”)
contains(“ijk”)
#使用rename()函数来重命名变量
rename(flights,tail_num=tailnum)
#将select()和everything()结合使用,可将几个变量移到数据框开头
select(flights,time_hour,air_time,everything())
练习
[AppleScript] 纯文本查看 复制代码 #1.从数据集中选择dep_time,dep_delay,arr_time和arr_delay
select(flights,dep_time,dep_delay,arr_time,arr_delay)
#2.如果在select()函数中多次计入一个变量名,会发生什么情况?
select(flights,dep_time,dep_time)
select(flights,dep_time)
#结果是相同的
select(flights,dep_time,dep_time,dep_time)
#3.one_of()函数的作用是什么?为什么它结合以下向量使用时非常有用?
vars<-c(
"year","month","day","dep_delay","arr_delay"
)
select(flights, one_of(vars))
#4.辅助函数忽略大小写
select(flights,contains("TIME"))
3.5 使用mutate()添加新变量 [AppleScript] 纯文本查看 复制代码 mutate()总是将新列添加在数据集的最后
#先创建一个更狭窄的数据集,以便能够看到新变量。
flights_sml<-select(flights,
year:day,ends_with("delay"),
distance,
air_time
)
mutate(flights_sml,
gain=arr_delay-dep_delay,speed=distance/air_time*60
)
mutate(flights_sml,
gain=arr_delay-dep_delay,
hours=air_time/60,
gain_per_hour=gain/hours
)
如果只想保留新变量,可以使用transmute()函数
3.5.1常用创建函数 算术运算符:+,-,*,/,^ 模运算符:%/%(整数除法),%%(求余),可用于拆分整数 对数函数:log(), log2(), log10() 在处理取值范围横跨多个数量级的数据时使用 推荐使用log2() 偏移函数: lead() lag() 累加和滚动聚合:cumsum(), cumprod(), commin(), cummax(),cummean() 逻辑比较:<,<=,>,>=,!= 排秩:min_rank
|