美文网首页
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