[英]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.