如何在同一数据表中同时实现分组统计总数与筛选计数?
问题描述
现有如下格式的数据集:
ID|Filter| 1 Y 1 N 1 Y 1 Y 2 N 2 N 2 N 2 Y 2 Y 3 N 3 Y 3 Y
希望得到分组后的统计结果,同时展示每个ID的总计数与Filter为"Y"的计数:
ID|All Count|Filter Yes 1 4 3 2 5 2 3 3 2
目前仅能通过以下代码实现总计数统计,如何添加Filter为"Y"的计数列?
df <- df %>% group_by(ID)%>% summarise(`All Count`=n())
解决方案
只需在summarise函数里新增一列,用sum(Filter == "Y")统计每个分组中Filter为"Y"的行数即可——逻辑判断Filter == "Y"会返回布尔值,求和时TRUE会被转换为1,FALSE转换为0,最终结果就是"Y"的数量。修改后的代码如下:
df <- df %>% group_by(ID) %>% summarise( `All Count` = n(), `Filter Yes` = sum(Filter == "Y") )
如果数据集的Filter列存在NA值,想要排除这些无效值,可以加上na.rm = TRUE参数:
df <- df %>% group_by(ID) %>% summarise( `All Count` = n(), `Filter Yes` = sum(Filter == "Y", na.rm = TRUE) )
内容的提问来源于stack exchange,提问作者user35131
相关产品推荐
相关产品推荐

