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

基于tidyverse按站点和日期筛选最低Priority值的数据行

用tidyverse筛选站点-日期组合中优先级最高(数值最小)的记录

针对你的需求,用tidyverse里的dplyr工具可以轻松实现,核心思路是按Site和Date分组,然后保留每组中Priority最小的行,以下是两种常用方法:

方法1:使用slice_min直接取最小优先级行

slice_min可以直接在分组后提取指定数量的最小数值对应的行,参数with_ties控制是否保留同优先级的多条记录:

library(tidyverse)

# 你的示例数据
df <- structure(list(Site = c(1L, 1L, 1L, 2L), Result = c(0.51, 0.55, 1.2, 4), Date = c("01.01.1999", "01.01.1999", "02.01.1999", "02.01.1999"), Priority = c(1L, 2L, 4L, 1L)), class = "data.frame", row.names = c(NA, 4L))

# 清理数据:每组保留Priority最小的1行,若有同优先级只留1条
df_cleaned <- df %>%
  group_by(Site, Date) %>%
  slice_min(Priority, n = 1, with_ties = FALSE) %>%
  ungroup()

# 查看结果
print(df_cleaned)

方法2:使用filter筛选等于组内最小优先级的行

如果需要保留同一组内所有优先级相同且最小的记录,用这种方法更合适:

df_cleaned <- df %>%
  group_by(Site, Date) %>%
  filter(Priority == min(Priority)) %>%
  ungroup()

额外提示:处理日期格式

当前你的Date列是字符型,后续生成时序数据建议转成日期类型,用lubridate包即可:

df <- df %>%
  mutate(Date = lubridate::dmy(Date))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:35:16