R中sum函数返回值异常:分组统计地震总数结果不符预期
问题原因与解决方法
你遇到的核心问题是分组状态未解除:
在执行group_by(mag)后,数据框始终保持按mag分组的状态——哪怕经过unique()、arrange()操作,分组信息依然保留。此时调用mutate(total=sum(count_per_mag))时,sum()会在每个mag分组内部单独计算,而每个分组里的count_per_mag是该组的地震数量(单值),所以sum()的结果自然等于当前组的count_per_mag值。
修复代码
只需在计算总和前添加ungroup()解除分组,让sum()作用于整个数据集:
quakes |> group_by(mag) |> mutate(count_per_mag=n())|> select(-lat, -long, -depth,-stations)|> unique()|> arrange(mag)|> ungroup() |> # 关键步骤:解除分组 mutate(total=sum(count_per_mag))
更简洁的替代方案
其实统计不同震级的地震数量,用count()函数可以一步完成,还能避免分组残留问题:
quakes |> count(mag, name = "count_per_mag") |> arrange(mag) |> mutate(total = sum(count_per_mag))
内容的提问来源于stack exchange,提问作者user3435230
相关产品推荐
相关产品推荐

