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

如何基于数据源优先级筛选各site各wyear的最大count值

按数据源优先级筛选并提取最大count值

我有一个大型DataFrame(示例如下),包含多来源数据。需要为每个site的每个wyear筛选最大count值,而数据源的可靠性存在差异,需先按优先级(kate > alan > mark > ron)选取对应wyear下最准确的数据源,再从该数据源中提取对应site和wyear的最大count值。

示例数据

wyear count site datasource
1   2018     5    A kate
2   2018    10    A alan
3   2020    20    A kate
4   2021    20    A kate
5   2021     5    A alan
6   2017     8    B mark
7   2018    89    B alan
8   2018    50    B mark
9   2019    49    B alan
10  2019    25    B mark
11  2019    35    B  ron
12  2020    62    B alan
13  2018    20    C kate
14  2018     5    C mark
15  2018     8    C kate
16  2019    89    C mark
17  2020    50    C alan
18  2020    49    C mark
19  2021    25    C alan
20  2021    25    C kate

预期结果

wyear count site datasource
1   2018     5    A kate
3   2020    20    A kate
4   2021    20    A kate
6   2017     8    B mark
7   2018    89    B alan
9   2019    49    B alan
12  2020    62    B alan
13  2018    20    C kate
16  2019    89    C mark
17  2020    50    C alan
20  2021    25    C kate

现有代码

我已掌握按site和wyear取最大count的方法,但不知如何先按数据源优先级筛选,现有代码如下:

data1 <- data %>%
  group_by(site, wyear)%>%
  mutate(max.count.at.site = max(count))

解决方案

核心思路是先将datasource转换为有序因子来定义优先级,再分组筛选出最高优先级数据源的行,最后提取其中的最大count值。

步骤1:定义数据源优先级

将datasource列转为有序因子,指定优先级顺序(kate > alan > mark > ron):

# 为数据源指定优先级顺序
data$datasource <- factor(data$datasource, 
                          levels = c("kate", "alan", "mark", "ron"), 
                          ordered = TRUE)

步骤2:分组筛选并提取最大值

使用dplyr按site和wyear分组,先保留该组内优先级最高的数据源的所有行,再从中筛选出count最大的行:

library(dplyr)

result <- data %>%
  group_by(site, wyear) %>%
  # 筛选当前组内优先级最高的数据源的行
  filter(datasource == min(datasource)) %>%
  # 从这些行中提取count最大的记录(若有多个相同最大值,会全部保留)
  filter(count == max(count)) %>%
  ungroup()

代码说明

  • 有序因子中,min(datasource)会返回优先级最高的数据源(因为kate是第一个level,数值最小);
  • 两次filter先锁定最高优先级数据源,再提取该数据源下的最大count,完全匹配预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 14:20:48