因此,我有一个数据集的摘要,我想创建一个新列,该列具有相同ID的最新日期的作用。如果该ID仅存在一行,则它将默认为唯一操作。因此,第一个数据集是当前数据集,第二个数据集是我想要的数据集:
ID date action
1000 1975-06-23 ABC
1000 1975-06-14 CDF
1001 1975-06-23 EFG
1001 1975-06-04 HIJ
1002 1975-06-23 ABC
1003 1975-06-23 ABC
ID date action new
1000 1975-06-23 ABC ABC
1000 1975-06-14 CDF ABC
1001 1975-06-23 EFG EFG
1001 1975-06-04 HIJ EFG
1002 1975-06-23 ABC ABC
1003 1975-06-23 ABC ABC
我尝试过df %>% group_by(ID) %>% slice(which.max(as.Date(date, '%Y/%m/%d'))) %>% select(action)
,但是由于某种原因它使我的R崩溃了。
答案 0 :(得分:1)
尝试:
library(dplyr)
df %>%
group_by(ID) %>%
mutate(date = as.Date(date),
new = action[which.max(date)])
输出:
# A tibble: 6 x 4
# Groups: ID [4]
ID date action new
<int> <date> <fct> <fct>
1 1000 1975-06-23 ABC ABC
2 1000 1975-06-14 CDF ABC
3 1001 1975-06-23 EFG EFG
4 1001 1975-06-04 HIJ EFG
5 1002 1975-06-23 ABC ABC
6 1003 1975-06-23 ABC ABC