美文网首页统计分析方法R data manipulate
R for Data Science(笔记) ---数据变换(创

R for Data Science(笔记) ---数据变换(创

作者: 生信小鹏 | 来源:发表于2021-07-04 16:22 被阅读0次
    R for Data Science

    tidy流处理数据的方便,我想这与管道符%>% 的使用,数据处理动词化,有着很重要的关系。

    用最少的时间,解决最重要的、最常见的问题,我把这称为是高效;剩余的难点,我把其称为提高。

    mutate动词的使用

    首先需要明确的是

    mutate是在原有的变量基础上,再创造相关变量,保留原来的变量。

    在这个基础之上,展开实战

    flights_sml <- select(flights, 
      year:day, 
      ends_with("delay"), 
      distance, 
      air_time
    )
    mutate(flights_sml,
      gain = dep_delay - arr_delay,
      speed = distance / air_time * 60
    )
    #> # A tibble: 336,776 x 9
    #>    year month   day dep_delay arr_delay distance air_time  gain speed
    #>   <int> <int> <int>     <dbl>     <dbl>    <dbl>    <dbl> <dbl> <dbl>
    #> 1  2013     1     1         2        11     1400      227    -9  370.
    #> 2  2013     1     1         4        20     1416      227   -16  374.
    #> 3  2013     1     1         2        33     1089      160   -31  408.
    #> 4  2013     1     1        -1       -18     1576      183    17  517.
    #> 5  2013     1     1        -6       -25      762      116    19  394.
    #> 6  2013     1     1        -4        12      719      150   -16  288.
    #> # … with 336,770 more rows
    

    上面的例子是利用现有的时间和距离计算了飞机的速度,以及总共多出的时间。

    mutate函数的强大之处在于,你在创建新变量的同时,你就可以使用新变量再创造新的变量,这一点结合管道符,可以发挥很大的作用。

    例如

    mutate(flights_sml,
      gain = dep_delay - arr_delay,
      hours = air_time / 60,
      gain_per_hour = gain / hours
    )
    

    transmute()函数使用

    如果只想保留新变量,那么就可以使用transmute()函数。例如

    transmute(flights,
      gain = dep_delay - arr_delay,
      hours = air_time / 60,
      gain_per_hour = gain / hours
    )
    #> # A tibble: 336,776 x 3
    #>    gain hours gain_per_hour
    #>   <dbl> <dbl>         <dbl>
    #> 1    -9  3.78         -2.38
    #> 2   -16  3.78         -4.23
    #> 3   -31  2.67        -11.6 
    #> 4    17  3.05          5.57
    #> 5    19  1.93          9.83
    #> 6   -16  2.5          -6.4 
    #> # … with 336,770 more rows
    

    mutate的其他用法

    创建新的变量,不止可以使用算数方法,其实还包括逻辑值使用方法。我经常使用mutate结合逻辑判断值进行新变量创造。

    使用TCGA数据,编号14,15位如果小于11,记为“cancer”,否则记为“normal”可以如下写

    mutate(data, type = ifelse(sample_type_id < 11, 'cancer', 'normal'))
    

    **再结合之前select排序,改变以下位置就好。

    rename的使用

    rename其实算不上创建新变量,因为只是对变量的名称进行了修改。
    具体使用如下:

    rename(flights, tail_num = tailnum)
    #> # A tibble: 336,776 x 19
    #>    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
    #>   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
    #> 1  2013     1     1      517            515         2      830            819
    #> 2  2013     1     1      533            529         4      850            830
    #> 3  2013     1     1      542            540         2      923            850
    #> 4  2013     1     1      544            545        -1     1004           1022
    #> 5  2013     1     1      554            600        -6      812            837
    #> 6  2013     1     1      554            558        -4      740            728
    #> # … with 336,770 more rows, and 11 more variables: arr_delay <dbl>,
    #> #   carrier <chr>, flight <int>, tail_num <chr>, origin <chr>, dest <chr>,
    #> #   air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>
    

    通常要使用rename是因为有些名称是以“.”或者空格连接的,会让R不好识别,需要重新命名,方便后续分析。

    这次的创建新变量,我感觉是比较简单的,不用写太多

    相关文章

      网友评论

        本文标题:R for Data Science(笔记) ---数据变换(创

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