按最新日期将特定字段提取到新列中

时间:2019-03-06 21:14:41

标签: r

因此,我有一个数据集的摘要,我想创建一个新列,该列具有相同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崩溃了。

1 个答案:

答案 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