You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

用dplyr在保留行的前提下添加物种年月观测最大值列

使用dplyr实现分组观测次数最大值填充

要实现保留原数据所有行和列,同时新增列填充每个Species-Year-Month组的观测次数,直接用dplyr的group_by + mutate组合即可,无需summarise:

library(dplyr)

# 示例数据
Sp <- data.frame(Species = c("A","A","A","A","A","A","A","A","A","A","A","B","B","B","B","B","C","C","C","C","C","C","C","C","C","C","C","C","C","C","C","C","C","C","C","C","C","C"),
                 Month= c("2","3","4","4","4","7","3","4","4","5","6","4","5","6","6","7","4","3","4","5","6","7","3","4","4","5","6","4","5","6","4","5","6","2","2","8","5","5"),
                 Year= c("2018","2005","2006","2006","2006","2006","2008","2008","2008","2008","2018","2009","2009","2009","2018","2009","2009","2009","2009","2009","2018","2005","2005","2005","2006","2006","2005","2006","2005","2005","2005","2009","2009","2009","2018","2018","2018","2018"))

# 新增分组观测次数列
Sp <- Sp %>%
  group_by(Species, Year, Month) %>%
  mutate(obs_max = n()) %>%
  ungroup()

关键逻辑说明

  • group_by(Species, Year, Month):按物种、年份、月份进行分组,确保后续计算仅针对同一组内的数据。
  • mutate(obs_max = n()):n()函数在分组后会返回当前组的行数(即该组的观测次数),mutate会将这个值填充到该组的每一行,同时保留原数据的所有行和列。
  • ungroup():可选操作,取消数据框的分组状态,避免后续操作受分组影响。

比如查看物种A在2006年4月的记录,该组共3行,对应的obs_max列值均为3,符合需求。

内容的提问来源于stack exchange,提问作者RGR_288

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 05:45:21