Один из вариантов - сначала преобразовать «Дата» в класс Date
, uncount
, чтобы увеличить «n» раз каждую строку, сгруппированную по «Тикеру», создать последовательность обратных дат из first
из 'Дата '
library(dplyr)
library(tidyr)
library(purrr)
df %>%
mutate(Date = as.Date(Date)) %>%
uncount(3) %>%
group_by(Ticker) %>%
mutate(Date_Sequence = seq(first(Date), length = n(), by = '-1 day'))
Или другой вариант - создать столбец list
с mutate
и unnest
df %>%
mutate(Date = as.Date(Date),
Date_Sequence = map(Date, seq, length = 3, by = '-1 day')) %>%
unnest_legacy(Date_Sequence)
# Ticker Date Date_Sequence
#1 AAPL 2019-01-05 2019-01-05
#2 AAPL 2019-01-05 2019-01-04
#3 AAPL 2019-01-05 2019-01-03
#4 MSFT 2019-02-10 2019-02-10
#5 MSFT 2019-02-10 2019-02-09
#6 MSFT 2019-02-10 2019-02-08