如何在满足标准的某些群体中绘制R图?

时间:2015-01-22 20:36:37

标签: r subset boxplot

这是我制作的一个简单数据集:

test <- data.frame(
   ID=1:10,
   group=c(3,2,1,3,3,3,4,1,3,3),
   height=c(156,167,165,187,153,172,178,191,155,189)
)

看看每组中有多少人:

> table(test$group)
1 2 3 4 
2 1 6 1 

然后我做了一个箱线图

boxplot(test$height~test$group)

boxplot height by group

正如你所看到的那样,第2组和第4组中只有一个人。我想在进行箱形图时将它们排除在外。换句话说,对有多个观察的群体进行绘图吗?

我知道子集函数,并认为这可能有用,但不确定如何在这种情况下最好地应用它。

3 个答案:

答案 0 :(得分:3)

您可以使用transform()ave()添加一个列,指示每个组中有多少观察结果,然后使用subset()参数仅保留多于1个观察者的观察结果。例如

boxplot(height~group, 
    transform(test, groupcount=ave(ID, group, FUN=length)), 
    subset=groupcount>1)

enter image description here

请注意,使用公式语法时,只能使用subset= boxplot()参数。

答案 1 :(得分:2)

我喜欢dplyr这些东西

library(dplyr)
test %>% group_by(group) %>%
         filter(n() > 1) %>% 
         boxplot(height~group, .) 

答案 2 :(得分:1)

你可以这样做:

tab <- as.data.frame(table(test$group))
tab1 <- tab[which(tab$Freq > 1),]
test2 <- test[which(test$group %in% tab1$Var1),]
boxplot(test2$height~test2$group)