美文网首页
R dplyr 核心函数

R dplyr 核心函数

作者: 重拾生活信心 | 来源:发表于2023-01-02 15:12 被阅读0次

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. 每天的计数 > 求和得到每月的计数 > 求和得每年的计数。

相关文章

网友评论

      本文标题:R dplyr 核心函数

      本文链接:https://www.haomeiwen.com/subject/jnahcdtx.html