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

如何用dplyr获取分组后最大样本量对应的年份(解决NA问题)

修正代码实现各站点样本量最大年份识别

原代码返回NA的核心问题是逻辑错误:year[max(n)]中max(n)得到的是样本量的数值最大值,而非该最大值所在的行索引。当这个数值大于分组后数据的行数时,就会因索引超出范围返回NA。

修正方案1:取第一个样本量最大的年份

使用which.max(n)获取分组内样本量最大的行的索引,再提取对应年份:

library(dplyr)
set.seed(42)
tibble(site = sample(LETTERS, 100, replace = TRUE),
       year = sample(c(2000:2005), 100, replace = TRUE),
       n    = sample(seq(1, 15, 1), 100, replace = TRUE)) %>% 
  group_by(site) %>% 
  mutate(maxYear = year[which.max(n)])

如果同一站点有多个年份样本量相同且均为最大值,该方法会返回第一个出现的年份。

修正方案2:返回所有样本量最大的年份

若需保留所有样本量最大的年份(用逗号分隔),可使用以下代码:

library(dplyr)
set.seed(42)
tibble(site = sample(LETTERS, 100, replace = TRUE),
       year = sample(c(2000:2005), 100, replace = TRUE),
       n    = sample(seq(1, 15, 1), 100, replace = TRUE)) %>% 
  group_by(site) %>% 
  mutate(maxYear = paste(year[n == max(n)], collapse = ", "))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 23:24:53