如果!=,则从表中排除

时间:2011-10-21 14:27:50

标签: r

如果我使用的是table(),我可以通过以下方式排除元素:

b <- factor(rep(c("A","B","C"), 10))
table(b, exclude="B")

现在如果我想排除“B”以外的所有内容怎么办?


我试过了 table(b, exlcude=!"B")但它没有奏效。 table()函数是否允许此功能?

3 个答案:

答案 0 :(得分:2)

您需要首先收集具有(具有)级别“B”的特定因子变量中的所有可能级别。有可能更简单的方法来做到这一点,但假设所需的排除发生的因素是'fac1',那么可能是这样的:

with( datafrm, table(fac1, fac2, fac3, exclude=setdiff(levels(fac1), "B") ) )

我可能会用subset

来减少“双重负面”
with(subset( datafrm, fac1 == "B"), table(fac1, fac2, fac3) )

答案 1 :(得分:0)

您可以使用setdiff

table(iris$Species,exclude=setdiff(iris$Species,"virginica"))    
virginica 
       50 

当然,您也可以只对您的表对象进行子集化:

table(iris$Species)["virginica"]
virginica 
       50 

答案 2 :(得分:0)

就像

一样简单
table(b)['B']

但是为了计算一个值的出现次数,不需要使用表格。更简单的是:

sum(b=='B')