R: развернуть и заполнить данные построчно по дате - PullRequest
0 голосов
/ 26 января 2019

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

igroup=c("A", "B", "C")
demo_df=data.frame(date=c("2018-11-28", "2018-12-17", "2019-01-23"), group)

Фрейм необработанных данных:

      date   group
1 2018-11-28     A
2 2018-12-17     B
3 2019-01-23     C

Я хочу иметь фрейм данных, который расширяет дату до следующего столбца, но при этом сохраняет информацию о группе. Например, дата с 2018-11-28 по 2018-12-16 - для группы A, дата с 2018-12-17 по 2019-01-22 - для группы B, а 2019-01-23 - для группы C.

Это вывод (result_df), который я хочу:

time=c(seq(as.Date("2018-11-28"), as.Date("2018-12-17")-1, by=1), 
seq(as.Date("2018-12-17"), as.Date("2019-01-23")-1, by=1),as.Date("2019-01-23") )
group1=c(rep("A",as.numeric(as.Date("2018-12-17")-as.Date("2018-11-28"))), 
rep("B",as.numeric(as.Date("2019-01-23")-as.Date("2018-12-17"))), "C" )
result_df=data.frame(time,group1 )
result_df

Мне интересно, есть ли более эффективный способ (использующий dplyr) для решения этой проблемы.

Заранее спасибо.

1 Ответ

0 голосов
/ 26 января 2019

Сначала убедитесь, что date сохранен как объект даты:

demo_df$date <- as.Date(demo_df$date, format = "%Y-%m-%d")

Затем, используя tidyverse, мы сначала complete последовательность, затем fill группа вниз:

library(tidyverse)

demo_df %>% complete(date = seq.Date(min(date), max(date), by = "day")) %>% 
 fill(igroup)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...