在R中按State和Filter分组生成计数表并添加计数列
解决方案
你需要用dplyr的group_by()配合mutate()来实现,tally()会将每组聚合为单行,不符合你保留原数据所有行的需求。具体代码如下:
library(dplyr) data1 <- data.frame( State = c("NJ", "NJ", "PA", "NJ", "TX"), Filter = c("Filter", "Filter", "No Filter", "Filter", "Filter"), Threshold = c("Exceeds","Exceeds", NA, "NL", "Exceeds") ) final_data <- data1 %>% group_by(State, Filter) %>% mutate( Count_Exceeds_Threshold = sum(Threshold == "Exceeds", na.rm = TRUE), Count_Total = n() ) %>% ungroup() # 查看结果 final_data
代码说明
group_by(State, Filter):按State和Filter两个字段分组Count_Exceeds_Threshold = sum(Threshold == "Exceeds", na.rm = TRUE):统计每组中Threshold等于"Exceeds"的次数,na.rm = TRUE确保NA值不干扰统计结果Count_Total = n():直接获取每组的总记录数ungroup():取消分组状态,避免后续操作受分组限制
运行后得到的结果和你期望的final_data完全一致。
内容的提问来源于stack exchange,提问作者Sarah
相关产品推荐
相关产品推荐

