【发布时间】:2020-11-08 12:46:26
【问题描述】:
我认为在我上次的尝试中,我解释得太复杂了,所以我尽量减少我的问题。
我正在寻找以下问题的解决方案。我有两个数据框,想从最后的数据框“df_result”中获取结果。
df_1 = data.frame(id=c(1, 15, 14, 35, 19, 19, 36, 18, 57, 78, 94), year=c(2018, 2020, 2019, 2020, 2018, 2020, 2017, 2019, 2020, 2019, 2018))
df_2 = data.frame(id=c(1, 15, 15, 14, 35, 19, 19, 19, 19, 19, 36, 18, 57, 78, 94), year=c(2018, 2020, 2020, 2019, 2020, 2018, 2018, 2018, 2020, 2020, 2017, 2019, 2020, 2019, 2018), color=c("green", "blue", "yellow", "green", "red", "black", "white", "orange", "yellow", "blue", "blue", "yellow", "white", "blue", "green"), weight=c(NA, 2, 1, NA, NA, 2, 3, 1, 1, 2, NA, NA, NA, NA, NA))
df_result = data.frame(id=c(1, 15, 14, 35, 19, 19, 36, 18, 57, 78, 94), year=c(2018, 2020, 2019, 2020, 2018, 2020, 2017, 2019, 2020, 2019, 2018), result=c("green", "yellow", "green", "red", "orange", "yellow", "blue", "yellow", "white", "blue", "green"))
信息:
- 正如您在 df_1 中看到的,每个 id 至少有一年。例如,id 19 有 2 年(2018 年、2020 年)。
- df_2 的每个 id 至少有 1 个条目,并且具有匹配的年份。如果有多个条目,“权重”表示哪个条目具有优先级(1 表示最高优先级)。
- 在 df_result 中,只有来自 df_2 的权重具有最小数字的颜色。
我知道如何找到问题案例,但下一步是什么?
df_temp <- df_2 %>%
group_by(id) %>%
filter(n() >= 2)
view(df_temp)
【问题讨论】: