r - x行的滑动数据集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 将包括 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)
推荐阅读
- python - Selenium 无法在我的 Facebook 页面上的“发帖”窗口上写字
- dataframe - 模式需要的字段少于声明的字段
- c# - WPF ReactiveUI ListBox 使用绑定的 ItemsSource 填充,但 ComboBox 没有
- amp-html - 用户点击返回按钮后 AMP 重置所选选项
- c++ - 如何使用 STL 算法找到最小值和最大值?
- algorithm - 返回最小正整数 > 0
- ios - 在 Swift UI 中,当我使用 NavigationLink 时,屏幕上没有显示任何内容
- node.js - 找不到模块'C:\node_modules\npm\bin\npm-cli.js
- if-statement - 这个公式中的矩阵大小是如何声明的?
- python - 意图不起作用,只有启动请求是