使用dplyr按Task分组统计Status为Completed的任务数量
解决按Task分组统计Completed任务数量的问题
你的代码问题出在summarize里直接引用了原始数据集df,而不是分组后的每组子集。当你用df$Status时,不管当前分组是什么,都会计算整个数据里Status为Completed的总行数,所以每个Task的Count结果都一样,这显然不是你想要的。
这里给你两种简单的正确实现方式:
方法一:先过滤再统计
先筛选出所有Status为Completed的记录,再按Task分组计数:
df %>% filter(Status == 'Completed') %>% count(Task, name = 'Count')
方法二:分组后用sum统计符合条件的行数
在分组后的summarize里,直接对当前组的Status列进行判断,用sum统计符合条件的数量(逻辑值TRUE会被当作1,FALSE当作0):
df %>% group_by(Task) %>% summarize(Count = sum(Status == 'Completed', na.rm = TRUE))
两种方法都会得到预期的结果:
# A tibble: 4 × 2 Task Count <chr> <int> 1 Assignment 0 2 Classwork 2 3 Homework 2 4 Poster 2
内容的提问来源于stack exchange,提问作者FAlonso
相关产品推荐
相关产品推荐

