-1

我正在尝试生成美国和日本之间收入的并排箱线图,两者都在第三列 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))

我不希望中国被包含在箱线图中。我怎样才能做到这一点??

提前非常感谢!!

4

2 回答 2

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

如果要减少子集因子变量中的级别数,则需要对其进行重构。您可以在公式规范中的这种情况下执行此操作。

于 2012-09-11T05:13:52.560 回答
1

使用 droplevels 和子集并假设您的数据被调用dat

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

请注意,droplevels.factor(x,...)简单地调用factor(x,...)所以@Dwins 解决方案更清洁。具体调用droplevels 可能有助于提高可读性。

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

boxplot(V1 ~ V3, droplevels(subset(dat, V3 != 'CHINA')))
于 2012-09-11T05:15:18.400 回答