r - dplyr 计数变量的一个特定值的数量

标签 r count dplyr

假设我有一个这样的数据集:

id <- c(1, 1, 2, 2, 3, 3)
code <- c("a", "b", "a", "a", "b", "b")
dat <- data.frame(id, code)

IE。,
    id  code
1   1   a
2   1   b 
3   2   a
4   2   a
5   3   b
6   3   b

使用 dplyr,我如何计算每个 id 有多少个 a

IE。,
   id  countA
1   1   1
2   2   2
3   3   0

我正在尝试这种不起作用的东西,
countA<- dat %>%
group_by(id) %>%
summarise(cip.completed= count(code == "a"))

上面给了我一个错误,“错误:没有适用于“group_by_”的方法应用于“逻辑”类的对象”

谢谢你的帮助!

最佳答案

请尝试以下操作:

library(dplyr)
dat %>% group_by(id) %>%
  summarise(cip.completed= sum(code == "a"))

Source: local data frame [3 x 2]
    id cip.completed
  (dbl)         (int)
1     1             1
2     2             2
3     3             0

这是有效的,因为逻辑条件 code == a只是一系列零和一,而这个系列的总和就是出现的次数。

请注意,您不一定会使用 dplyr::countsummarise无论如何,因为它是 summarise 的包装器调用 n()sum()本身。见 ?dplyr::count .如果你真的想用count ,我想您可以通过首先过滤数据集以仅保留 code==a 中的所有行来做到这一点。 ,并使用 count然后会给你所有严格的正数(即非零)计数。例如,
dat %>% filter(code==a) %>% count(id)

Source: local data frame [2 x 2]

     id     n
  (dbl) (int)
1     1     1
2     2     2

关于r - dplyr 计数变量的一个特定值的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36315163/

相关文章:

r - 如何在 data.table 中执行此合并操作

mysql - 如何在 MYSQL 的 COUNT 中使用 SELECT

r - 计算 value 和 value - x 之间的值的数量,按变量

r - 如何在 ggplot 中有效地按比例重新排序因子?

r - XPath 选择和连接所有文本节点

r - R中嵌套循环的性能缓慢

MySQL 完整分组依据

r - 在函数内部使用 dplyr 时出错

r - 使函数适应 tidyverse 生态系统

r - 如何为 sparkR 运行 R 脚本?