如何生成测量相同变量的两个组的箱线图?

时间:2012-09-11 05:06:53

标签: r boxplot

我正试图在美国和日本之间产生一个并排的收入箱图,两者都在第三列V#之下。第一列V1是收入变量。

我正在粘贴data.frame对象的dput输出。

structure(list(V1 = c(5252525L, 4545352L, 4242424L, 5235252L, 
5353532L, 5234242L, 5252525L, 4535352L, 5774636L, 9743643L, 2342553L, 
5352323L), V2 = c(3L, 4L, 5L, 6L, 3L, 2L, 3L, 1L, 4L, 6L, 7L, 
8L), V3 = structure(c(3L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 3L, 3L, 
3L, 2L), .Label = c("CHINA", "JAPAN", "USA"), class = "factor")), .Names = c("V1", 
"V2", "V3"), class = "data.frame", row.names = c(NA, -12L))

我不希望中国在箱线图中被包围。我怎么能这样做?

非常感谢!!

2 个答案:

答案 0 :(得分:4)

boxplot(V1 ~ factor(V3), data=dat[ dat$V3 != "CHINA", ] )

如果要减少子集编辑因子变量中的级别数,则需要重新计算它。您可以在公式规范中执行此实例。

答案 1 :(得分:1)

使用droplevels和subset并假设您的数据被称为dat

boxplot(V1~droplevels(V3),subset(dat, V3 != 'CHINA'))

请注意,droplevels.factor(x,...)只需调用factor(x,...),因此@Dwins解决方案更清晰。专门致电droplevels 可能帮助提高可读性。

您还可以将droplevels应用于data.frame,这将从每个因子变量中删除未使用的级别

boxplot(V1 ~ V3, droplevels(subset(dat, V3 != 'CHINA')))