zoukankan      html  css  js  c++  java
  • R语言dplyr包的学习

    dplyr包可以看作是plyr包的一个扩展,主要是针对数据框的数据操作。

    在使用dplyr包中的函数对数据框进行操作之间,最好将其转换为tbl对象:tbl_df()

    一个很好的效果是,tbl对象可以根据显示空间大小来进行部分显示。

    利用dplyr包常见的数据操作可归纳为以下5种:

    1. 筛选 filter()

    按给定的逻辑判断筛选出符合要求的子数据集, 返回符合条件的子数据集的行。类似于 base::subset() 函数

     filter(.data, ...)  .data为数据集,...为逻辑判断条件,多个参数条件相当于and连接

    此外,... 还有一些特殊用法:

    • ==,>,>= 等
    • &,|,!,xor()
    • is.na(),colname %in% c("factor1","factor2")
    • between(),near()

    2. 排列 arrange()

    按给定的列名依次对行进行排序.这个函数和 plyr::arrange() 是一样的, 类似于 order()

      arrange(.data, ...)  ... 一串逗号分割无引号的列名。默认升序,可利用desc()进行降序

    3. 选择 select()

    用列名作参数来选择子数据集,类似于R自带的 subset() 函数

      select(.data, ...)  ...是无引号一系列的以逗号分割的表达式。可以是列名

    此外,... 还有一些特殊用法:

    • starts_with(x,ignor.case = TRUE) # 选择以字符x开头的变量 
    • ends_with(x,ignore.case = TRUE) # 选择以字符x结尾的变量 
    • contains(x,ignore.case = TRUE) #选择所有包含x的变量 
    • matches(x,ignore.case = TRUE) #选择匹配正则表达式的变量 
    • num_range(“x”,1:5,width = 2) #选择从x01到x05的数值型变量 
    • one_of(“x”,”y”,”z”) #选择包含在声明变量中的变量 
    • everything() #选择所有变量,一般调整数据集中变量顺序时使用 
    •  -  #排除列名
    • :  #mpg : disp也就相当于2:4,选择从mpg到disp的所有列

    另外,select还可用于改列名

     select(iris, petal_length = Petal.Length) 

    相当于 rename(iris, petal_length = Petal.Length) 

    只是,select返回的是所选中的列,而rename返回的是所有列。

    4. 扩展 mutate()

    对已有列进行数据运算并添加为新列,并保留原始变量。作用与 plyr::mutate() 相同, 与base::transform() 相似, 优势在于可以在同一语句中对刚增加的列进行操作。而同样操作用R自带函数 transform() 的话就会报错

      mutate(.data, ...)   ... 名字-值的成对表达式,利用colname=NULL扔掉变量

     此外,... 还有一些特殊用法:

    • +,- 等
    • log()
    • lead(),lag()
    • dense_rank(), min_rank(), percent_rank(), row_number(), cume_dist(), ntile()
    • cumsum(), cummean(), cummin(), cummax(), cumany(), cumall()
    • na_if(), coalesce()
    • if_else(), recode(), case_when()

    另注意:mutate添加新变量并保留原变量;而transmute扔掉原始变量。

    同时与之比较相关的函数有mutate_all(),mutate_at(),mutate_if()

    类似的有:transmute_all(),transmute_at(),mutate_if()

    summarise_all(),summarise_at(),summarise_if()

    group_by_all(),group_by_at(),group_by_if()

    5. 汇总 summarise()

    对数据框调用其它函数进行汇总操作, 返回一维的结果,等同于 plyr::summarise(),

      summarise(.data, ...)   ... 名字-值的表达式,值是汇总函数

    此外, ... 还有一些特殊用法:

    • Center: mean(), median()
    • Spread: sd(), IQR(), mad()
    • Range: min(), max(), quantile()
    • Position: first(), last(), nth(),
    • Count: n(), n_distinct()
    • Logical: any(), all()

    其实,summarise()常被用于汇总经group_by后的分组数据,并且每个组输出一行

    分组操作 group_by()

     根据某些变量进行分组。

     group_by(.data, ..., add = FALSE)  ... 用于分组的变量,add=false,覆盖现有组,true在现有组基础上添加

    与之对应的还有,去除分组ungroup(x,...)

  • 相关阅读:
    Django中MySQL读写分离技术
    BBS+Blog项目开发
    数据算法 --hadoop/spark数据处理技巧 --(5.移动平均 6. 数据挖掘之购物篮分析MBA)
    数据算法 --hadoop/spark数据处理技巧 --(3.左外连接 4.反转排序)
    数据算法 --hadoop/spark数据处理技巧 --(1.二次排序问题 2. TopN问题)
    mysql ---- Host '' is not allowed to connect to this MySQL server
    win 8.0.12
    Transformer 和 Transformer-XL——从基础框架理解BERT与XLNet
    Transformer 详解
    XLNet:运行机制及和Bert的异同比较
  • 原文地址:https://www.cnblogs.com/Hyacinth-Yuan/p/8313254.html
Copyright © 2011-2022 走看看