x行R的滑动数据集

问题描述 投票:0回答:1

我有一个类似下面的数据集,并希望为最后20行创建一个嵌套的数据框。

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

data.frame(x,y,z)

例如,如果x = 100,它将包括x = 81:100,x = 99包括80:99的行的记录,依此类推。如果之前没有20行,则仅包括之前的行数,例如15将包括1:15。

理想的输出将被嵌套,因此函数可以应用于所有数据框

r window tidy
1个回答
0
投票

如果我已正确理解,则此功能应适合:

#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)
© www.soinside.com 2019 - 2024. All rights reserved.