Drop.levels在一个盒子和胡须图中

时间:2015-11-24 15:16:19

标签: r

我需要在我的盒子和胡须图中使用drop.levels函数。我正在使用的数据是Dance,数据框架是舞蹈$ new和dance $ type,我想要包含的变量是Contra,Blues和Swing。还有其他3个我不想包含的变量; Lindy,Salsa和Tango。

这就是我所拥有的:

box.labels<-c("Blues","Contra","Swing")
boxplot(dance$new~dance$type, ylab="Dance Count",
xlab="Type", name=box.labels, drop.levels(Lindy, Salsa, Tango),
main="Dancing for a Healthier You")

我合并drop.levels错了吗?

2 个答案:

答案 0 :(得分:0)

猜测,你可能想要

box.labels<-c("Blues","Contra","Swing")
boxplot(new~type, data=droplevels(subset(dance,type %in% box.labels)),
     ylab="Dance Count",
     xlab="Type", name=box.labels,
     main="Dancing for a Healthier You")

这里的要点是:

  • drop.levelsdroplevels都用于从数据集中删除未使用的级别。上面的subset()命令更有可能做你想做的事。
  • 我在基地R而不是droplevels()使用gdata::drop.levelsdroplevels()基地R已有几年历史; gdata::drop.levels在可用之前发布。
  • 我使用new~type,data=...代替dance$new~dance$type;在可能的情况下使用data参数通常更具可读性和更强大。

你可能甚至不需要droplevels();默认情况下,boxplot()可能会忽略未使用的级别。 name参数也可能是多余的。

答案 1 :(得分:0)

感谢您的帮助。你的提示帮助我解决了问题。

我最终绘制了子集数据,这让我避免了丢弃级别功能。这是我使用的:

dancenew<-subset(Dance, Type=="Lindy" | Type== "Blues" | Type=="Contra")

box.labels<-c("Lindy","Blues","Contra") 
boxplot(dancenew$Count~dancenew$Type, ylab="Dance Count", data=ausportnew, xlab="Type", name=box.labels, main="Dancing for a healthier you")