2012-10-19 47 views
5

如何基于值对表进行子集并返回这些值?这将返回刚刚指数:如何在R中对表对象进行子集化?

with(chickwts, table(feed)) 
with(chickwts, table(feed)) > 11 
which(with(chickwts, table(feed)) > 11) 

输出

> with(chickwts, table(feed)) 
feed 
    casein horsebean linseed meatmeal soybean sunflower 
     12  10  12  11  14  12 
> with(chickwts, table(feed)) > 11 
feed 
    casein horsebean linseed meatmeal soybean sunflower 
    TRUE  FALSE  TRUE  FALSE  TRUE  TRUE 
> which(with(chickwts, table(feed)) > 11) 
    casein linseed soybean sunflower 
     1   3   5   6 

回答

5

您需要使用计算值的两倍,因此它使用一个中间变量有用:

x <- with(chickwts, table(feed)) 
x[x>11] 
feed 
    casein linseed soybean sunflower 
     12  12  14  12 
+0

啊,是的,当然,谢谢! – jrara

+1

或者有点重复的代码:'with(chickwts,table(feed)[table(feed)> 11])' – A5C1D2H2I1M1N2O1R2T1

6

这里是另一种方法利用Filter功能:

Filter(function(x) x > 11, with(chickwts, table(feed))) 
feed 
    casein linseed soybean sunflower 
     12  12  14  12 
+0

很好的使用'Filter()'。 – A5C1D2H2I1M1N2O1R2T1

1

使用基函数另一种选择:

subset(data.frame(table(chickwts$feed)), Freq > 11) 

结果:

 Var1 Freq 
1 casein 12 
3 linseed 12 
5 soybean 14 
6 sunflower 12 

使用dplyr包:

library(dplyr) 
chickwts %>% 
    count(feed) %>% 
    filter(n > 11) 

结果:

Source: local data frame [4 x 2] 

     feed n 
1 casein 12 
2 linseed 12 
3 soybean 14 
4 sunflower 12 
相关问题