Один из способов сделать это с помощью tidyr::complete
- создать последовательность дат от date - 6
до date
для каждой строки.
library(dplyr)
library(tidyr)
df %>%
mutate(Date = as.Date(Date)) %>%
group_by(row = row_number()) %>%
complete(Date = seq(Date - 6, Date, "day")) %>%
ungroup %>%
arrange(row, desc(Date)) %>%
fill(Lat, lon)
# A tibble: 21 x 3
# Date Lat on
# <date> <int> <int>
# 1 1996-03-12 -33 153
# 2 1996-03-11 -33 153
# 3 1996-03-10 -33 153
# 4 1996-03-09 -33 153
# 5 1996-03-08 -33 153
# 6 1996-03-07 -33 153
# 7 1996-03-06 -33 153
# 8 2004-07-15 -35 160
# 9 2004-07-14 -35 160
#10 2004-07-13 -35 160
# … with 11 more rows
data
df <- structure(list(Date = structure(1:3, .Label = c("1996-03-12",
"2004-07-15", "2008-07-26"), class = "factor"), Lat = c(-33L,
-35L, -28L), lon = c(153L, 160L, 155L)),
class = "data.frame", row.names = c("1", "2", "3"))