如何在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 ...