Этот вопрос о том, как заменить пропущенные дни и месяцы во фрейме данных с помощью R. Учитывая приведенный ниже фрейм данных, 99 обозначает пропущенный день или месяц, а NA представляет даты, которые полностью неизвестны.
df<-data.frame("id"=c(1,2,3,4,5),
"date" = c("99/10/2014","99/99/2011","23/02/2016","NA",
"99/04/2009"))
Я пытаюсь заменить отсутствующие дни и месяцы на основе следующих критериев:
Для дат с отсутствующим днем, но известным месяцем и годом, заменаdate будет случайным выбором от середины интервала (с первого дня до последнего дня этого месяца). Например, для идентификатора 1 дата замены будет выбрана с середины 01.10.2014 по 31.10.2014. Для id 5 это будет середина с 01/04/2009 по 30/04/2009. Следует отметить различное количество дней в разные месяцы, например, 31 день в октябре и 30 дней в апреле.
Как и в случае идентификатора 2, где отсутствуют день и месяцдата замены - это случайный выбор от середины интервала (от первого дня до последнего дня года), например, с 01.01.2011 по 31.12.2011.
Обратите внимание: полные даты (например, в случае с идентификатором 3) и NA не должны быть заменены.
Я пытался использовать функцию seq вместе с функциями as.POSIXct и as.Date, чтобы получить последовательность дат, из которых должны быть выбраны даты замены. Сложность, с которой я сталкиваюсь, заключается в том, как автоматизировать код R для получения интервалов дат (он варьируется в зависимости от идентификатора) и как сделать случайную ничью из середины интервалов.
Ожидаемый результат будет иметьдата замены идентификаторов 1, 2 и 5, но даты идентификаторов 3 и 4 остаются без изменений. Любая помощь в этом очень ценится.