如何在R中对表对象进行子集化?

时间:2012-10-19 11:20:14

标签: 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 

3 个答案:

答案 0 :(得分:6)

这是另一种使用Filter函数的方法:

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

答案 1 :(得分:5)

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

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

答案 2 :(得分: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