我正试图在美国和日本之间产生一个并排的收入箱图,两者都在第三列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))
我不希望中国在箱线图中被包围。我怎么能这样做?
非常感谢!!
答案 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')))