【发布时间】:2018-08-13 06:05:46
【问题描述】:
我觉得这在基础 R 中应该很容易,但我就是想不通。 我有一个简单的数据框,假设它看起来像这样
tbl <- read.table(text =
"Field1 Field2
100 200
150 180
200 160
280 250
300 300
300 250",
header = TRUE)
现在,我想做的是创建一个将应用滚动 % 加法的函数,例如:
fn <- function(tbl, pct) {}
接受上面的数据框为tbl。它根据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)
等等
我会使用包解决方案,但更喜欢 base R,因为它有助于学习过程!我的长期目标是通过 field 和 pct 的每个组合构建一个循环过程,以便我可以在回归模型中测试它的效果;因此,我的直觉是我以后可以应用的功能是前进的方向。
谢谢。
【问题讨论】:
-
你看过
lag()函数吗? -
filter在这里很方便,filter(tbl, 0.1, method = "recursive")。请参阅这个不错的帖子以获得解释:simple examples of filter function, recursive option specifically -
不错。
filter也比我的回答快。 -
过滤器似乎完全符合我的需要。我不得不仔细检查(:))但是是的,它工作得很好。我没有将我的问题与自动回归联系起来。现在,我的下一个挑战是如何应用这些组合(这可能是我怀疑的第二个问题!)。谢谢。
标签: r apply rolling-computation