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

如何在R中使用slice_max()按年份筛选每年TOP20最高日均温数据

解决方案

你当前的代码未按年份分组,因此slice_max会从整个数据集筛选全局最高的20条记录。要实现每年提取20条最高气温记录,需先按年份拆分数据集,再对每组单独执行筛选操作,具体实现如下:

步骤说明

  1. 确保date列为日期格式,若不是则先转换;
  2. 从date列提取年份作为分组依据;
  3. 按年份分组后,对每组筛选气温最高的20条数据。

完整代码示例

# 加载依赖包
library(dplyr)
library(lubridate)

# 转换date列为日期格式(若尚未转换)
daily_mean_temp_sorted$date <- as.Date(daily_mean_temp_sorted$date)

# 提取年份、分组、筛选每年前20条最高气温记录
top_20_per_year <- daily_mean_temp_sorted %>%
  mutate(year = year(date)) %>%  # 从日期中提取年份
  filter(year >= 1997 & year <= 2010) %>%  # 限定目标年份范围
  group_by(year) %>%             # 按年份分组
  slice_max(mean, n = 20) %>%    # 每组取气温最高的20条
  ungroup()                      # 取消分组(根据后续操作需求可选)

无lubridate依赖的替代写法

若不想加载lubridate包,可使用基础R函数提取年份:

top_20_per_year <- daily_mean_temp_sorted %>%
  mutate(year = format(as.Date(date), "%Y")) %>%
  filter(year >= 1997 & year <= 2010) %>%
  group_by(year) %>%
  slice_max(mean, n = 20) %>%
  ungroup()

核心要点

group_by(year)是实现按年筛选的关键:它会将数据集按年份拆分为多个子数据集,后续的slice_max会对每个子数据集单独生效,而非作用于整个全局数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 23:17:18