R 我如何用前n个级别(按某些指标)加上[其他]替换因子级别?
对于一个在图形中要着色的级别超过合理数量的因子,我想用“其他”替换任何不在“前10”中的级别 备选问题:如何将因子级别降低到rcolorbrewer可以绘制为单独颜色的数量 例如,如果我想根据棒球数据绘制每十年的本垒打数:R 我如何用前n个级别(按某些指标)加上[其他]替换因子级别?,r,ggplot2,color-scheme,R,Ggplot2,Color Scheme,对于一个在图形中要着色的级别超过合理数量的因子,我想用“其他”替换任何不在“前10”中的级别 备选问题:如何将因子级别降低到rcolorbrewer可以绘制为单独颜色的数量 例如,如果我想根据棒球数据绘制每十年的本垒打数: require(ggplot2) qplot(data=baseball,10*year%/%10,hr, stat="identity",geom="bar") 也许我想看看哪些团队对此做出了贡献: qplot(data=baseball,10*year%/%10,
require(ggplot2)
qplot(data=baseball,10*year%/%10,hr,
stat="identity",geom="bar")
也许我想看看哪些团队对此做出了贡献:
qplot(data=baseball,10*year%/%10,hr,
fill=team,
stat="identity",geom="bar")
这会创建太多的颜色级别!这些颜色非常相似,你无法区分它们,而且有太多的颜色无法在屏幕上显示
我真的很想看到排名前X(7)的球队(按全垒打总数计算),然后剩下的都集中在一个名为“其他”的类别/颜色中
假设我们有一个名为hotfactor
的函数,它知道如何执行此操作:
hotfactor(afactor,orderby,count)={ ??? }
qplot(data=baseball,10*year%/%10,hr,
fill=hotfactor(factor(team),hr,n=7),
stat="identity",geom="bar") +
scale_fill_brewer("team","Dark2")
那么,我可以用什么来制作“热因子”?因此,在经过多次迭代和搜索web之后,我创建了这个漂亮的短因子
hotfactor= function(fac,by,n=10,o="other") {
levels(fac)[rank(-xtabs(by~fac))[levels(fac)]>n] <- o
fac
}
抱歉,无法帮助编辑。它足够紧凑,因为它是。。。我加了几个空格。哈!我下班已经晚了,所以我没有时间考虑整洁。谢谢。我回答我自己的问题似乎有些奇怪,但这是一个很好的方式,当我忘记它或转移工作时,我可以用谷歌搜索答案。我认为这实际上是完全允许/预期的。有关用法示例,请参见问题
x <- hotfactor(f,val)
x <- reorder(x,-val,sum)