如何在R中按条件排序因子?

如何在R中按条件排序因子?,r,R,我想根据观测值的总和对因子进行排序 df <- mtcars[,c('cyl', 'gear')] df$cyl <- factor(df$cyl) str(df) 'data.frame': 32 obs. of 2 variables: $ cyl : Factor w/ 3 levels "4","6","8": 2 2 1 2 3 2 3 1 1 2 ... $ gear: num 4 4 4 3 3 3 3 4 4 4 ... cyl的升序应为6、4和8。我

我想根据观测值的总和对因子进行排序

df <- mtcars[,c('cyl', 'gear')]
df$cyl <- factor(df$cyl)

str(df)
'data.frame':   32 obs. of  2 variables:
 $ cyl : Factor w/ 3 levels "4","6","8": 2 2 1 2 3 2 3 1 1 2 ...
 $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
cyl
的升序应为
6
4
8
。我是说

 $ cyl : Factor w/ 3 levels "6","4","8"
我怎么能意识到这一点

问题的背景是:
.

您可以将所需的顺序输入到
factor
的levels参数中。在这种情况下,若要即时执行,请将第二行替换为:

df$cyl <- factor(df$cyl, levels=names(sort(table(df$cyl))))
在这里,使用
计算频率值,然后使用
排序
按升序排序。结果被输入到levels参数,该参数决定了
因子中级别的顺序

注意:我最初将
名称
包装为.numeric,但后来发现这不是必需的。
factor
功能执行必要的转换

df$cyl <- factor(df$cyl, levels=names(sort(table(df$cyl))))
str(df)
'data.frame':   32 obs. of  2 variables:
 $ cyl : Factor w/ 3 levels "6","4","8": 1 1 2 1 3 1 3 2 2 1 ...
 $ gear: num  4 4 4 3 3 3 3 4 4 4 ...