x 行 R 的滑动数据集
Sliding dataset for x rows R
我有一个如下所示的数据集,想为最后 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 的行的记录,等等。如果之前没有 20 行,它将只包括之前的行数,例如 15 将包括 1:15.
理想的输出是嵌套的,这样函数就可以应用于所有数据帧
如果我没理解错的话,这个函数应该适合:
#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)
我有一个如下所示的数据集,想为最后 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 的行的记录,等等。如果之前没有 20 行,它将只包括之前的行数,例如 15 将包括 1:15.
理想的输出是嵌套的,这样函数就可以应用于所有数据帧
如果我没理解错的话,这个函数应该适合:
#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)