【发布时间】:2021-02-07 16:02:04
【问题描述】:
来自原始样本数据集:
id <- c('1','1','2', '2', '3', '3', '3')
month <- c('6', '6', '3', '3', '4', '4', '4')
iso <- c('MEX', 'USA', 'CRI', 'SPA', 'CHN', 'MEX', 'SPA')
value <- c('1550', '1550', '384', '115', '1100', '1100', '1100')
original <- data.frame(id, month, iso, value)
我希望每个 id-month 对只得到 1 次观察。 遵循的规则是:
- 为每个 id-month 对选择最大值值。
- 如果同一 id-month 对的不同观察值存在 相同 最大值,我想随机选择其中一行。
因此,新示例数据集将如下所示:
id <- c('1', '2', '3')
month <- c('6', '3', '4')
iso <- c('USA', 'CRI','MEX')
value <- c('1550', '384', '1100')
selection_criteria <- c('random','max_value','random')
new <- data.frame(id, month, iso, value, selection_criteria)
我已尝试运行以下代码:
new <- original %>% group_by(id, month) %>%
filter(value == max(value))
但是,当我有多个具有最大值的观察值(对于相同的 id-month 对)时,随机选择一个变量并不能成为窍门。
鉴于我的数据集的维度很大,我的意图是自动化该过程。
有什么线索吗?
谢谢。
【问题讨论】: