Jon*_*Jon 3 r apply rolling-computation
我认为这在基础R中应该很容易,但我无法弄明白.我有一个简单的数据框,让我们说它看起来像这样
tbl <- read.table(text =
"Field1 Field2
100 200
150 180
200 160
280 250
300 300
300 250",
header = TRUE)
Run Code Online (Sandbox Code Playgroud)
现在,我想要做的是创建一个将应用滚动%添加的函数,例如:
fn <- function(tbl, pct) {}
Run Code Online (Sandbox Code Playgroud)
它接受上面的数据帧为tbl.它将当前行的百分比部分添加到基于NEXT的行pct,并且几乎以累积方式滚动它.
例如,fn(tbl$Field1, 0.1)会生成以下结果:
100 (100 + 0.1*0)
160 (150 + 0.1*100 = 160)
216 (200 + 0.1*160 = 216)
301.6 (280 + 0.1*216 = 301.6)
Run Code Online (Sandbox Code Playgroud)
等等
我会使用一个包解决方案,但更喜欢基础R,因为它有助于学习过程!我的长期目标是通过field和pct的每个组合构建一个循环,这样我就可以在回归模型中测试它的效果; 因此,我的直觉是,我后来可以应用的功能是前进的方向.
谢谢.
该filter()函数是stats包的一部分,它是基数R.保持小数点后一位:
round(filter(tbl$Field1, 0.1, method="recursive"), 1)
Run Code Online (Sandbox Code Playgroud)
哪会产生以下结果
100.0 160.0 216.0 301.6 330.2 333.0
Run Code Online (Sandbox Code Playgroud)