dplyr
5个核心函数 + group_by() + 辅助函数()
- filter() : 按值筛选观测
- arrange() : 对行进行重新排序
- select() : 按名称选取变量
- mutate() : 使用现有的变量创建新变量
- summarize() : 将多个值总结为一个摘要统计量
1 filter() : 按值筛选观测
筛选出条件为TRUE的行
1.1 比较运算符
> , >= , < ,<= , != (不等于),== (等于)
1.2 逻辑运算符
& (与), |(或) , !(非)
[图片上传失败...(image-ffec3d-1672729920760)]
1.3 缺失值
NA(not available) , 在运算中会传递。
filter()只保留 TRUE 的行, 排除 FALSE 和NA 。
保留NA :filter(df, is.na(x) | x > 1)
2 arrange() : 对行进行重新排序
arrange(data , var1,desc(var2))
后面的列在前面的基础上继续排序。使用desc()
进行降序排序。NA值不论升序还是降序,都在最后。
3 select() : 按名称选取变量
select(data , var1 , var2 ...)
#可以用数字序号表示列范围,如
select(flights, 3:5)
# 按列名选择
select(flights, year, month, day)
# 选择 year 、 day 之间 所有列 包括 year 和 day
select(flights, year:day)
# 选择 ..以外的列
select(flights, -(year:day))
3.1 select() 常用辅助函数
-
starts_with("abc")
: 以 “abc” 开头的列名 -
ends_with("xyz")
: 以 “xyz” 结尾的 列名 -
contains("ijk")
: 包含 “ijk” 的列名 -
matches("(.)\\1")
: 匹配正则表达式的变量名。 -
num_range("x", 1:3)
: 匹配 x1, x2 and x3.
3.2 rename () 重命名
select() 的变体。用 select()重命名,没被罗列的列不被选择。 而rename()保留所有列。
select(data ,new_name = old_name)
rename(data ,new_name = old_name)
3.3 +everything() 把几个变量移至数据框前部
everything()
: 代指所有选中的变量
select(data, var9, var10, everything())
3.4 all_of() ,any_of()
变量名已经保存为一个字符型向量
R的字符串函数(如paste())和正则表达式函数可以用来生成变量名子集, 然后在select中配合all_of()
使用。 all_of()要求指定的所有变量名都是数据框中存在的; 如果指定的变量有些可能是不存在的, 想将确实存在的那些变量选取进来, 应使用any_of()
4 mutate() : 使用现有的变量创建新变量
保留原有列,将新列添加在最后。transmute()
只保留新变量。
4.1 常用创建函数
- 算术运算符 :
+ , - , * , / , ^
- 模运算符 :
%/%
(整除),%%
(求余) - 对数函数 :
log() , log2() ,log10()
- 偏移函数 :
lead()
,lag()
- 累加和滚动聚合 :
cumsum()
、cumprod()
、commin()
和cummax()
;cummean()
函数以计算累加均值。 - 逻辑比较:
<,<=,>,>=和!=
- 排秩 :
min_rank()
默认的排秩方式是,最小的值获得最前面的名次,使用desc(x) 可以让最大的值获得最前面的名次。 变体函数row_number(),dense_rank(),percent_rank(),cume_dist()和ntile()
:
5 summarize() : 将多个值总结为一个摘要统计量
可以将数据框折叠成一行
5.1 使用管道符%>%
组合多种操作
如果一行代码需要输入的参数值刚好是它前一行的输出结果,可以使用%>%
省略中间的输入过程。参数不是位于第一的位置,需要额外使用占位符 .
x %>% func (arg)
,即func(x,arg)
x %>% func (arg,.)
,即func(arg,x)
-
%>%
避免对于多个操作产生的中间数据框分别命名。专注于操作过程而不是每个转换对象的命名。代码中,%>%
可读作"然后"
5.2 NA
聚合函数都有一个na.rm参数,可以在计算前去除缺失值.
5.3 计数
聚合函数中包括一个计数n()
,或 非缺失值的计数sum(!is.na())
是比较好的选择。
(TRUE :1 ,FALSE:0)
- sum(条件)输出 TRUE的数量。
- mean(条件)输出TRUR的比例。
5.4 常用摘要函数
- 位置度量:
median()
- 分散程度度量:
sd(),IQR()和mad()
- 秩的度量:
min(),quantile()和max()
- 定位度量:
first(),nth()和last()
- 计数 :
n(), n_distinct() , count() , count (,wt) , sum() , mean()
6 group_by() : 分组
group_by()函数可以将分析单位从整个数据集更改为单个分组。接下来,在分组的数据框上使用dplyr函数时,它们会自动的应用到每个分组。
- 按多个变量分组 :每个变量不同值的排列组合。
每次摘要函数 ,用一个分组变量,循序渐进。
e.g. 每天的计数 > 求和得到每月的计数 > 求和得每年的计数。
网友评论