gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 00:46:38 26 4
gpt4 key购买 nike

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

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com