R语言如何将多条件按变量唯一值汇总的操作简化为单条语句
解决方案
你要的单语句实现可以直接用条件聚合实现,不需要拆分中间表再关联,代码如下:
dams <- dam_counts %>% # 先过滤公共条件,减少后续计算量 filter( Year %in% 2015:2021, Dam %in% c("BON", "MCN"), Species == "Chinook", LifeStage == "Adult" ) %>% group_by(Year) %>% summarize( # 针对不同坝单独加对应的JulianDay过滤条件求和 BON = sum(Count[Dam == "BON" & JulianDay %in% 1:167], na.rm = TRUE), MCN = sum(Count[Dam == "MCN" & JulianDay %in% 1:175], na.rm = TRUE) )
补充说明
你提到的across()函数更适合批量处理多列/多组规则统一的汇总场景,你当前只有两个坝的汇总规则,用上面的条件求和写法可读性最高。如果后续需要批量处理更多坝的不同过滤规则,可以提前把坝名和对应的JulianDay范围存为配置表,再结合pivot_wider实现批量汇总,不用重复写求和逻辑。
内容的提问来源于stack exchange,提问作者ament
相关产品推荐
相关产品推荐

