这是我的示例数据
df <- data.frame(new_id=rep(1:4,2),
EntryDate=as.Date(c("1980-05-09", "1980-06-09", "1980-06-10", "1980-06-29",
"1980-06-11", "1980-07-01", "1980-05-19", "1980-05-19")),
ExitDate=as.Date(c("1980-05-11", "1980-06-15", "1980-06-20", "1980-07-29",
"1980-06-18", "1980-07-15", "NA", "1980-05-29")))
df <- dplyr::arrange(df, new_id, EntryDate)
我想将最大ExitDate分配给ID相等的缺失日期(NA)。这是我的代码:
df2 <- df %>%
group_by(new_id, EntryDate) %>%
summarize(new_exit = as.Date(max(ExitDate, na.rm = TRUE), origin ="1970-01-01")) %>%
right_join(df, by = c("new_id", "EntryDate"))
new_exit返回的NA不是我想要的。
new_id EntryDate new_exit ExitDate
(int) (date) (date) (date)
1 1980-05-09 1980-05-11 1980-05-11
1 1980-06-11 1980-06-18 1980-06-18
2 1980-06-09 1980-06-15 1980-06-15
2 1980-07-01 1980-07-15 1980-07-15
3 1980-05-19 <NA> <NA>
3 1980-06-10 1980-06-20 1980-06-20
4 1980-05-19 1980-05-29 1980-05-29
4 1980-06-29 1980-07-29 1980-07-29
这就是我要找的。 p>
new_id EntryDate new_exit ExitDate
(int) (date) (date) (date)
1 1980-05-09 1980-05-11 1980-05-11
1 1980-06-11 1980-06-18 1980-06-18
2 1980-06-09 1980-06-15 1980-06-15
2 1980-07-01 1980-07-15 1980-07-15
3 1980-05-19 1980-06-20 <NA>
3 1980-06-10 1980-06-20 1980-06-20
4 1980-05-19 1980-05-29 1980-05-29
4 1980-06-29 1980-07-29 1980-07-29