R for Data Science(筆記) ---數(shù)據(jù)變換(行排序)

R for Data Science

tidy流處理數(shù)據(jù)的方便,我想這與管道符%>% 的使用,數(shù)據(jù)處理動詞化,有著很重要的關(guān)系。

arrange()

arrange()的工作方式與filter()類似,不同之處在于它不是選擇行,而是改變它們的順序。

默認(rèn)排序是升序排列,數(shù)據(jù)依然使用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
#>   <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>, tailnum <chr>, origin <chr>, dest <chr>,
#> #   air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>

可以看出,可以選擇多個變量進(jìn)行排序,依次進(jìn)行。

同樣降序的要求如何達(dá)到,配合使用desc()函數(shù)。其實(shí)就是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
#>   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
#> 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 <dbl>,
#> #   carrier <chr>, flight <int>, tailnum <chr>, origin <chr>, dest <chr>,
#> #   air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>

沒有什么難度,主要是tidyverse包的開發(fā)者大神,在這些函數(shù)背后,都為我們做好了,我們順手拿來用就好了。

當(dāng)然,對于基礎(chǔ)函數(shù),還有order()函數(shù),sort()函數(shù),都是可以運(yùn)用的。

但是我覺得,這些都不是最重要的,能解決問題就好,將一項技能運(yùn)用的嫻熟很重要。如果,有需要自己寫包的話,可以多了解一些基礎(chǔ)函數(shù),單純是數(shù)據(jù)分析的話,我還是喜歡tidyverse這種動詞話的操作,和python就有點(diǎn)像了。

排序拓展

總感覺寫一個函數(shù),沒什么干貨,寫一項我自己平時用到的排序。

要求A數(shù)據(jù)框按照B數(shù)據(jù)框的數(shù)據(jù)排序(順序一致)

我的操作一般是這樣(沒有用tidyverse)

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

歡迎交流

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容