我想根据观察结果的总和对因子进行排序。
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
在各行中查看总和。
addmargins(table(df))
gear
cyl 3 4 5 Sum
4 1 8 2 11
6 2 4 1 7
8 12 0 2 14
Sum 15 12 5 32
升序cyl
应该是6
,4
和8
。我是说
$ cyl : Factor w/ 3 levels "6","4","8"
我怎么能意识到这一点?
问题的背景是:按 R 中的总和对堆叠条形图中的组进行排序。
您可以将所需的排序输入到 的 levels 参数中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 ...
此处,使用 计算频率值table
,然后使用以升序排序sort
。结果被提供给 levels 参数,该参数确定 中级别的顺序factor
。
注意:我最初包裹names
在 中as.numeric
,但后来发现这没有必要。该factor
函数执行必要的转换。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句