簡體   English   中英

如何按R中的因子水平的預定順序對數據幀進行排序?

[英]How can I sort a dataframe by a predetermined order of factor levels in R?

我有一個數據框,其中一列包含唯一因素。 我想按照預定的因子水平順序對數據框進行排序,而不必依賴原始順序。

例如,我的數據如下所示:

label <- c('tree','lake','house', 'human')

number <- c(50,1,2,5)


df <- data.frame(

  group = label,

  value = number)

category_order <- category_order = c('tree','house','lake','human') 

df的形式

     group number
1    tree  50
2    lake   1
3    house  2
4    human  5

但我希望將其分類為category_oder,因此df_new如下所示:

     group number
1    tree  50
2    house  2
3    lake   1
4    human  5

我知道在這種情況下,我可以交換第二行和第三行,但是總的來說,我不知道facors會以哪種順序出現在數據幀中,如果沒有強大的功能,我將找不到解決辦法關於我可以使用哪些因素以及它們應遵循的順序的限制。 (例如,字母順序)

我們可以將“組”的levels指定為category_order並使用它來“安排”

library(dplyr)
df1 <- df %>% 
          arrange(factor(group, levels = category_order))
df1
#  group value
#1  tree    50
#2 house     2
#3  lake     1
#4 human     5

或使用fct_relevel

library(forcats)
df %>% 
   arrange(fct_relevel(group, category_order))

在基數R中,我們可以使用match根據category_order獲取group的順序

df[match(df$group, category_order), ]

#  group value
#1  tree    50
#3 house     2
#2  lake     1
#4 human     5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM