我有一个类似下面的数据集,并希望为最后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。
理想的输出将被嵌套,因此函数可以应用于所有数据框
如果我已正确理解,则此功能应适合:
#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)