【发布时间】:2018-03-27 18:25:44
【问题描述】:
我有数百个重复的主键和与这些键关联的日期。日期可能有也可能没有缺失条目,但需要缺失的条目确实需要替换为 max(date)。
#Create Proxy dataframe
df <- tibble(
key = c("a", "a", "b", "b", "c", "c", "d", "d", "e", "e", "f", "f", "h", "h", "i","i", "j", "j", "k", "k", "l", "l", "m", "m"),
date1 = c("NA", "2017-02-13", "NA", "2017-04-14", "2017-05-18", "2017-05-18", "NA", "2018-01-07",
"2017-09-24", "2017-09-25", "NA", "2017-09-29", "NA", "2017-08-13", "NA", "2017-04-29",
"NA", "2018-01-28", "NA", "2017-10-08", "NA", "2017-01-10", "NA", "2017-11-01")
)
df$date1 <- as.Date(df$date1, format = "%Y-%m-%d")
注意
-key "a" 缺少日期,需要替换为唯一可用的日期
-key "c" 没有任何缺失的日期
-key "e" 有两个不同的日期,但需要记录最后一个日期
df
# A tibble: 24 x 2
key date1
<chr> <date>
1 a NA
2 a 2017-02-13
3 b NA
4 b 2017-04-14
5 c 2017-05-18
6 c 2017-05-18
7 d NA
8 d 2018-01-07
9 e 2017-09-24
10 e 2017-09-25
# ... with 14 more rows
我尝试过但不起作用的解决方案:
library(lubridate)
df$date <- with(df$date, as.Date(ifelse(is.na(df$date), orderDate, df$date), origin = "1970-01-01"))
library(dplyr)
df %>% group_by(key) %>%
mutate(date = (date, NA, df$date)) %>%
as.data.frame
任何帮助将不胜感激!谢谢!
【问题讨论】: