根据列总和过滤表输出

时间:2017-10-03 11:28:59

标签: r

我想基于其值的总和(在本例中为列值)过滤表输出。然后我想为那些高于某些总和的值创建一个条形图。

代码:

counts <- table(mtcars$vs, mtcars$gear)
counts
#output
#x  3  4  5
#0 12  2  4
#1  3 10  1

#I want to create a barplot for those with column sums > 12 ie. gears 3 and 4.

#pseudo-code
#barplot(counts[colSums>12]?

我的预期输出是它会显示只有2列的条形图,用于齿轮3和4.如何在R中执行此操作?

PS:我可以创建找到每辆车的齿轮数(table(mtcars$gear)),将那些总和为&gt; 12,然后创建另一个table(mtcars$vs, mtcars$gear)来创建有2列的条形图,但我正在寻找是否有任何直接的方法来做到这一点。

1 个答案:

答案 0 :(得分:1)

一个ggplot2解决方案,

# install.packages(c("ggplot2"), dependencies = TRUE)
library(ggplot2)
g <- ggplot(subset(mtcars, gear <= 4), aes(factor(vs)))
g + geom_bar(aes(fill = factor(gear)))

gear 3 and 4 ggplot2

或按照lmo's comment,

counts <- with(mtcars, table(vs, gear)) 
counts

barplot(counts[,colSums(counts) >= 12])

plot