按pit首次出现年份统计唯一值 解决重复计数问题
解决方案
问题出在原代码统计的是每年内出现过的唯一pit值,同一个pit如果在多个年份都有记录,会被多次计入不同年份的统计结果,导致总和超过全局唯一pit数量。要实现按pit首次出现的年份统计,确保每个pit只被计数一次,可按以下方式修改代码:
简洁高效版
df %>% # 按pit分组,提取每个pit首次出现的年份 group_by(pit) %>% summarise(first_year = format(min(Date), "%Y")) %>% ungroup() %>% # 按首次出现年份统计对应唯一pit的数量 count(first_year, name = "unique_pit_count")
分步清晰版
如果需要保留更多中间过程,也可以用这种方式:
df %>% # 为每条记录标记所属pit的首次出现年份 group_by(pit) %>% mutate(first_year = format(min(Date), "%Y")) %>% ungroup() %>% # 按首次出现年份分组,统计唯一pit数量 group_by(first_year) %>% summarise(unique_pit_count = n_distinct(pit))
逻辑说明
- 先按
pit分组,用min(Date)找到每个pit最早出现的日期,格式化为年份后作为该pit的首次出现年份。 - 基于首次出现年份进行统计,每个pit只会被归属到一个年份中,最终各年份的统计结果总和将等于全局唯一pit的数量(901)。
内容的提问来源于stack exchange,提问作者Ryan Gary
相关产品推荐
相关产品推荐

