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

如何按site分组获取各站点最低气温?R语言数据处理问题

按站点分组获取最低气温的解决方案

你遇到的问题核心是:subset()函数不支持by参数,这个参数会被直接忽略,导致min(temp)计算的是整个数据集的全局最低温,自然只能返回对应一行,无法实现分组筛选。

以下是几种可行的实现方式:

方法1:基础R原生实现

方式1.1:仅获取每个站点的最低温数值

用aggregate()函数直接分组聚合计算:

# 计算每个站点的最低气温
min_temp_by_site <- aggregate(temp ~ site, data = df, FUN = min)
print(min_temp_by_site)

输出结果会是每个站点对应的最低温数值。

方式1.2:保留原数据中最低温对应的完整行

用ave()函数为每个站点标记出该行是否为组内最低温,再用subset()筛选:

# 新增列标记该行是否为对应站点的最低温
df$is_group_min <- df$temp == ave(df$temp, df$site, FUN = min)
# 筛选出所有组内最低温的行
minT <- subset(df, is_group_min)
print(minT)

方法2:使用dplyr(tidyverse生态)

如果习惯更直观的管道语法,推荐用dplyr:
先安装并加载包(首次使用需安装):

install.packages("dplyr")
library(dplyr)

方式2.1:筛选出每个站点最低温的完整行

minT <- df %>%
  group_by(site) %>%  # 按site分组
  filter(temp == min(temp)) %>%  # 筛选组内最低温的行
  ungroup()  # 取消分组状态
print(minT)

方式2.2:仅汇总每个站点的最低温数值

min_temp_summary <- df %>%
  group_by(site) %>%
  summarise(min_temp = min(temp)) %>%  # 计算组内最低温
  ungroup()
print(min_temp_summary)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 05:17:19