Есть ли функция R для нахождения списка всех дат между двумя значениями. затем вставляя их как строки? - PullRequest
1 голос
/ 25 февраля 2020

У меня есть кадр данных в следующем формате:

Contract_Begin  Contract_End  FP
2020-01-01       2020-01-31   5
2020-01-01       2020-03-31   6

Если значение Contract_End - Contract_Begin меньше 1 месяца, я хочу вставить дополнительные месяцы в виде строк ниже. Вот желаемый результат:

Contract_Begin   Contract_End   FP
2020-01-01        2020-01-31    5
2020-01-01                      6
2020-02-01                      6
2020-03-01                      6

Попытка выполнить sh в R как часть предварительной обработки данных. Любая помощь очень ценится.

1 Ответ

0 голосов
/ 25 февраля 2020

Мы можем использовать map2, чтобы получить последовательность дат из 'Contract_Begin', 'Contract_End', а затем unnest столбец list, созданный map2, и развернуть строки

library(dplyr)
library(tidyr)
library(purrr)
df1 %>% 
   mutate_at(1:2, as.Date) %>% 
   mutate(Contract_Begin = map2(Contract_Begin, Contract_End, seq,
            by = "1 month")) %>%
   unnest(c(Contract_Begin))
...