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

R中使用dplyr/tidyverse为50个州保留各月最高值的方法

实现方案

你可以使用tidyverse生态下的dplyr和lubridate包的函数完成需求,核心用到的函数如下:

  • 分组函数:group_by()
  • 字段加工函数:mutate()
  • 排序函数:arrange()
  • 分组切片函数:slice_tail()
  • 日期提取函数(lubridate包提供):year()、month()

具体实现代码

假设你的数据集命名为us_state_cum_data,包含州名字段state、日期字段date(已转换为Date格式)、累计指标字段cum_value,完整代码如下:

# 加载tidyverse(已内置dplyr、lubridate)
library(tidyverse)

result <- us_state_cum_data %>%
  # 提取年月信息,避免不同年份的同月被错误合并
  mutate(
    data_year = year(date),
    data_month = month(date)
  ) %>%
  # 按州、年、月分组
  group_by(state, data_year, data_month) %>%
  # 分组内按日期升序排序,保证最后一行是当月最新记录
  arrange(date, .by_group = TRUE) %>%
  # 取每个分组的最后1行,即为当月该州最高累计值
  slice_tail(n = 1) %>%
  # 可选:移除临时生成的年月字段
  ungroup() %>%
  select(-data_year, -data_month)

补充说明

如果你的数据集已经提前完成排序、且已经内置年月字段,也可以省略mutate()和arrange()步骤,直接分组后调用slice_tail(n=1)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:45:01