9

如何根据值对表进行子集化并返回这些值?这仅返回索引:

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 
4

3 回答 3

6

这是使用该Filter功能的另一种方法:

Filter(function(x) x > 11, with(chickwts, table(feed)))
feed
   casein   linseed   soybean sunflower 
       12        12        14        12 
于 2012-10-19T11:34:41.870 回答
6

您需要使用计算值两次,因此使用中间变量很有用:

x <- with(chickwts, table(feed))
x[x>11]
feed
   casein   linseed   soybean sunflower 
       12        12        14        12 
于 2012-10-19T11:24:49.297 回答
3

使用基本功能的另一种选择:

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
于 2014-12-25T15:01:58.080 回答