滚动百分比沿列添加

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的每个组合构建一个循环,这样我就可以在回归模型中测试它的效果; 因此,我的直觉是,我后来可以应用的功能是前进的方向.

谢谢.

Sco*_*ott 5

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)