按组计算大于0的单元格

时间:2017-07-06 19:55:18

标签: r count aggregate

我正在尝试按组计算大于0的单元格数量,我需要帮助来解决这个问题。

我的数据如下:

Group   Number of Shoes
    1                 0
    1                 1
    1                 2
    2                 0
    2                NA
    2                 1
    3                 1
    3                 2
    3                 2           

我想要这个:

Group       Shoe owners
    1                 2
    2                 1
    3                 3

2 个答案:

答案 0 :(得分:2)

您可以通过以下方式完成此操作:

aggregate(Number.of.Shoes ~ Group, df, function(x) sum(x > 0, na.rm = TRUE))

结果:

  Group Number.of.Shoes
1     1               2
2     2               1
3     3               3

这也可以使用dplyr包来完成:

library(dplyr)
df %>% 
  group_by(Group) %>% 
  summarise(counts = sum(Number.of.Shoes > 0, na.rm = TRUE))

答案 1 :(得分:1)

我们也可以使用data.table

library(data.table)
setDT(df1)[Number.of.Shoes >0, .(Shoe.Owners = .N), Group]
#      Group Shoe.Owners
#1:     1           2
#2:     2           1
#3:     3           3