我今天花了几个小时来找到解决方案,那里有类似的线程,但不完全是我需要的。
数据集:
Year <- c(2019, 2020, 2021, 2019, 2020, 2020, 2021, 2021)
Term <- c("2019_T1", "2020_T1", "2021_T1", "2019_T1", "2020_T1", "2020_T2", "2021_T1", "2021_T2")
Code <- c(1,1,1,2,2,2,2,2)
Description <- c("Desc1","Desc1","Desc1", "Desc2", "Desc2", "Desc2", "Desc2_NotRecent","Desc2_Recent")
这会生成一个如下表:
Year Term Code Description
1 2019 2019_T1 1 Desc1
2 2020 2020_T1 1 Desc1
3 2021 2021_T1 1 Desc1
4 2019 2019_T1 2 Desc2
5 2020 2020_T1 2 Desc2
6 2020 2020_T2 2 Desc2
7 2021 2021_T1 2 Desc2_NotRecent
8 2021 2021_T2 2 Desc2_Recent
问题: 如何添加一列来显示每个代码的最新说明。
我需要根据术语查找最新的。也许这可以通过首先进行简单的排序来完成,抱歉我还没有弄清楚。
重要的是最新的术语值。此处,最近的期限是 2021_T2。如果选择第一个值,它可能是旧的描述,并且会使利益相关者感到困惑。
我需要的结果:
Year Term Code Description Most_Recent
1 2019 2019_T1 1 Desc1 Desc1
2 2020 2020_T1 1 Desc1 Desc1
3 2021 2021_T1 1 Desc1 Desc1
4 2019 2019_T1 2 Desc2 Desc2_Recent
5 2020 2020_T1 2 Desc2 Desc2_Recent
6 2020 2020_T2 2 Desc2 Desc2_Recent
7 2021 2021_T1 2 Desc2_NotRecent Desc2_Recent
8 2021 2021_T2 2 Desc2_Recent Desc2_Recent
非常感谢大家的帮助。编辑以包含 Robin Gertenbach 的简单解决方案。
df %>%
group_by(Code) %>%
dplyr:: mutate(Most_Recent = dplyr::last(Description, Term))
最佳答案
更短的解决方案,没有连接或条件
df %>%
group_by(Code) %>%
mutate(Most_Recent = last(Description, Term))
关于r - 将列添加到数据框以显示最新的描述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69160385/