如何在 R 資料框中查詢分組值的順序?
為了找到 R 資料框中分組值的順序,我們可以使用 dplyr 包的 mutate 函式以及 rank 函式,分組將藉助 group_by 函式完成。
例如,如果我們有一個名為 df 的資料框,其中包含兩列,例如 Group 和 DV,那麼我們可以使用下面給出的命令來查詢 DV 值的分組順序:
df%%group_by(Group)%%mutate(Order=rank(DV))
示例 1
以下程式碼片段建立了一個示例資料框:
Group<-rep(LETTERS[1:5],each=4) Score<-sample(1:50,20) df1<-data.frame(Group,Score) df1
建立了以下資料框
Group Score 1 A 13 2 A 27 3 A 50 4 A 42 5 B 43 6 B 20 7 B 45 8 B 49 9 C 31 10 C 15 11 C 26 12 C 33 13 D 40 14 D 38 15 D 12 16 D 17 17 E 16 18 E 28 19 E 5 20 E 9
要在上面建立的資料框中載入 dplyr 包並在 df1 中查詢 Score 的分組順序,請將以下程式碼新增到上面的程式碼片段中:
Group<-rep(LETTERS[1:5],each=4) Score<-sample(1:50,20) df1<-data.frame(Group,Score) library(dplyr) df1%%group_by(Group)%%mutate(Order=rank(Score)) # A tibble: 20 x 3 # Groups: Group [5]
輸出
如果您將上面給出的所有程式碼片段作為一個程式執行,它將生成以下輸出:
Group Score Order <chr <int <dbl 1 A 13 1 2 A 27 2 3 A 50 4 4 A 42 3 5 B 43 2 6 B 20 1 7 B 45 3 8 B 49 4 9 C 31 3 10 C 15 1 11 C 26 2 12 C 33 4 13 D 40 4 14 D 38 3 15 D 12 1 16 D 17 2 17 E 16 3 18 E 28 4 19 E 5 1 20 E 9 2
示例 2
以下程式碼片段建立了一個示例資料框:
Category<-rep(c("I","II","III","IV"),each=5) Sales<-sample(51:100,20) df2<-data.frame(Category,Sales) df2
建立了以下資料框
Category Sales 1 I 97 2 I 66 3 I 75 4 I 80 5 I 63 6 II 69 7 II 84 8 II 72 9 II 59 10 II 65 11 III 68 12 III 73 13 III 88 14 III 93 15 III 100 16 IV 58 17 IV 83 18 IV 95 19 IV 61 20 IV 67
要在上面建立的資料框中查詢 df2 中 Sales 的分組順序,請將以下程式碼新增到上面的程式碼片段中:
Category<-rep(c("I","II","III","IV"),each=5) Sales<-sample(51:100,20) df2<-data.frame(Category,Sales) df2%%group_by(Category)%%mutate(Order=rank(Sales)) # A tibble: 20 x 3 # Groups: Category [4]
輸出
如果您將上面給出的所有程式碼片段作為一個程式執行,它將生成以下輸出:
Category Sales Order <chr <int <dbl 1 I 97 5 2 I 66 2 3 I 75 3 4 I 80 4 5 I 63 1 6 II 69 3 7 II 84 5 8 II 72 4 9 II 59 1 10 II 65 2 11 III 68 1 12 III 73 2 13 III 88 3 14 III 93 4 15 III 100 5 16 IV 58 1 17 IV 83 4 18 IV 95 5 19 IV 61 2 20 IV 67 3
廣告