Я пытаюсь разделить фрейм данных по группе, а затем применить функцию, которая создаст несколько отдельных списков или фреймов данных.
Например, разделить данные ниже по id, а затем создать отдельные списки или фреймы данных. для каждого 60-дневного периода.
id <- rep(1:5, each = 365)
date <- rep(seq(as.Date('2019-01-01'), as.Date('2019-12-31'), 'day'), 5)
x <- rnorm(1825)
y <- rnorm(1825)
df <- data.frame(id, date, x, y)
Я пытался использовать group_split или split в сочетании с seq.int, и я могу заставить это работать только с 1 идентификатором, используя этот
df2 <- df %>%
filter(id == 1)
data <- list()
data <- lapply(
seq(1,length(df2$x)-(60-1)) #For the number of days - n - 1
,function(i) {
data[[i]] <- list('x'=df2$x[seq.int(i,i+(60-1))]
,'y' = df2$y[seq.int(i,i+(60-1))])
})
Поэтому конечный вывод будет либо группой списков, таких как вывод сверху, либо вложенным фреймом данных
ID |last_date | data
1 | 2019-12-31| [60 x 3]
1 | 2019-12-30| [60 x 3]
1 | 2019-12-29| [60 x 3]