Заполните столбцы самым последним значением - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть такой набор данных в R:

Date       | ID  | Age |
2019-11-22 | 1   | 5   |
2018-12-21 | 1   | 4   |
2018-05-09 | 1   | 4   |
2018-05-01 | 2   | 5   |
2017-10-10 | 2   | 4   |
2017-07-21 | 1   | 3   |

Как изменить значения возраста каждой группы ID на самую последнюю запись возраста?

Результаты должны выглядеть следующим образом это:

Date       | ID  | Age |
2019-11-22 | 1   | 5   |
2018-12-21 | 1   | 5   |
2018-05-09 | 1   | 5   |
2018-05-01 | 2   | 5   |
2017-10-10 | 2   | 5   |
2017-07-21 | 1   | 5   |

Я пытался group_by(ID)%>% mutate(Age = max(Date, Age)), но, кажется, он дает странные огромные цифры для определенных случаев, когда я пробую это на огромном наборе данных. Что может быть не так?

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

Попробуйте сначала отсортировать,

df %>% 
 arrange(as.Date(Date)) %>% 
 group_by(ID) %>% 
 mutate(Age = last(Age))

, что дает,

# A tibble: 6 x 3
# Groups:   ID [2]
  Date          ID   Age
  <fct>      <int> <int>
1 2017-07-21     1     5
2 2017-10-10     2     5
3 2018-05-01     2     5
4 2018-05-09     1     5
5 2018-12-21     1     5
6 2019-11-22     1     5
0 голосов
/ 27 февраля 2020

Я думаю, что проблема в вашей функции mutate:

Попробуйте это:

    group_by(ID) %>% 
arrange(as.date(Date) %>%
mutate(Age = max(Age))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...