R for Data Science(笔记) ---数据变换(行排序)

R for Data Science

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

arrange()

arrange()的工作方式与filter()类似,不同之处在于它不是选择行,而是改变它们的顺序。

默认排序是升序排列,数据依然使用flights。例如

arrange(flights, year, month, day)
#> # A tibble: 336,776 x 19
#>    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
#>                                      
#> 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 ,
#> #   carrier , flight , tailnum , origin , dest ,
#> #   air_time , distance , hour , minute , time_hour 

可以看出,可以选择多个变量进行排序,依次进行。

同样降序的要求如何达到,配合使用desc()函数。其实就是descent;descend(下降的英文单词前几个字母),所以还是很简单,人性化的,就和写文章一样,所以操作上手都是很快的。
例如

arrange(flights, desc(dep_delay))
#> # A tibble: 336,776 x 19
#>    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
#>                                      
#> 1  2013     1     9      641            900      1301     1242           1530
#> 2  2013     6    15     1432           1935      1137     1607           2120
#> 3  2013     1    10     1121           1635      1126     1239           1810
#> 4  2013     9    20     1139           1845      1014     1457           2210
#> 5  2013     7    22      845           1600      1005     1044           1815
#> 6  2013     4    10     1100           1900       960     1342           2211
#> # … with 336,770 more rows, and 11 more variables: arr_delay ,
#> #   carrier , flight , tailnum , origin , dest ,
#> #   air_time , distance , hour , minute , time_hour 

没有什么难度,主要是tidyverse包的开发者大神,在这些函数背后,都为我们做好了,我们顺手拿来用就好了。

当然,对于基础函数,还有order()函数,sort()函数,都是可以运用的。

但是我觉得,这些都不是最重要的,能解决问题就好,将一项技能运用的娴熟很重要。如果,有需要自己写包的话,可以多了解一些基础函数,单纯是数据分析的话,我还是喜欢tidyverse这种动词话的操作,和python就有点像了。

排序拓展

总感觉写一个函数,没什么干货,写一项我自己平时用到的排序。

要求A数据框按照B数据框的数据排序(顺序一致)

我的操作一般是这样(没有用tidyverse)

A %>%
column_to_rownames('NAME') %>% 
  .[rownames(B),]

欢迎交流

你可能感兴趣的:(R for Data Science(笔记) ---数据变换(行排序))