Скользящий набор данных для x строк R - PullRequest
0 голосов
/ 28 января 2020

У меня есть набор данных, подобный приведенному ниже, и я хотел бы создать вложенный фрейм данных для последних 20 строк.

x <- rep(1:100, 1)
y <- rnorm(100)
z <- rnorm(100)*2

data.frame(x,y,z)

Например, где x = 100, он будет включать записи для строк, где x = 81: 100, х = 99 будет включать в себя 80:99 и так далее. Если бы не было 20 строк, прежде чем он включал бы только количество строк до 15, как 1: 15.

Идеальный вывод был бы вложенным, поэтому функции можно применять ко всем фреймам данных

1 Ответ

0 голосов
/ 29 января 2020

Если я правильно понял, эта функция должна соответствовать:

#library
library(tidyverse)

#data
x <- rep(1:100, 1)
y <- rnorm(100)
z <- rnorm(100)*2

dataf <- data.frame(x,y,z)

#working function
getDf <- function(df, n) {

  if (n >= 19) {

    return(df %>% slice((n-19):n))  

  } else {

    return(df %>% slice(1:n))

  }

}

#examples
getDf(dataf,100)

getDf(dataf,99)

getDf(dataf,15)
...