2011-10-21 24 views
0

如果我使用的是table()我可以通过做排除元素:从表排除如果=

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

现在,如果我要排除一切,但“B”?我试过 table(b, exlcude=!"B")但它没有奏效。 table()函数是否允许此功能?

+0

如果您不修复此问题,您可能会被关闭。哪个'table'参数?哪个功能?如果您发布了一些示例代码和预期结果,可能有人可以提供帮助。 – Andrie

+0

认为他们的意思是表'功能' - 编辑。 – Spacedman

回答

2

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

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

,我可能会做它不那么“双负”与subset

with(subset(datafrm, fac1 == "B"), table(fac1, fac2, fac3)) 
+0

你是一个比我更好的mindreader。 – Andrie

+0

不起作用。如果包含“B”,则setdiff(“B”,levels(fac1))为字符(0)。你必须把它们变成:setdiff(levels(fac1),“B”) –

+0

@Joris Meys。固定。 (未经测试的代码的乐趣。) –

0

您可以使用setdiff

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

当然,你可能也只是子集的表对象:

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

就这么简单

table(b)['B'] 

但对于数一个值的出现次数,就没有必要使用表。更简单的是:

sum(b=='B')