Извлечение определенных полей по самой последней дате в новый столбец - PullRequest
0 голосов
/ 07 марта 2019

Итак, у меня есть фрагмент набора данных, и я хотел бы создать новый столбец, который будет содержать действие с самой последней датой для того же идентификатора.Если для этого идентификатора есть только одна строка, то по умолчанию используется только одно действие.Таким образом, первый набор данных является текущим, а второй - тем, который мне нужен:

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 Ответ

1 голос
/ 07 марта 2019

Попробуйте:

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  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...