R 基于新创建列的先前值填充新列
我有一个包含两列的现有数据框。我想根据这些规范创建第三列: s的当前值=s的先前值+[先前的s值*当前的X2值] 我已经设法得到了一些这样的计算,作为测试,它基于其他两列填充s。当然,这不会根据其自身的先验值进行计算R 基于新创建列的先前值填充新列,r,dplyr,lag,R,Dplyr,Lag,我有一个包含两列的现有数据框。我想根据这些规范创建第三列: s的当前值=s的先前值+[先前的s值*当前的X2值] 我已经设法得到了一些这样的计算,作为测试,它基于其他两列填充s。当然,这不会根据其自身的先验值进行计算 library(dplyr) set.seed(123) a <- data.frame(replicate(2,sample(1:10,10,rep = TRUE))) a %>% mutate(s = lag(X1, default = 1) +lag(X1, de
library(dplyr)
set.seed(123)
a <- data.frame(replicate(2,sample(1:10,10,rep = TRUE)))
a %>% mutate(s = lag(X1, default = 1) +lag(X1, default = 1) * X2)
X1 X2 s
1 3 10 11
2 8 5 18
3 5 7 64
4 9 6 35
5 10 2 27
6 1 9 100
7 6 3 4
8 9 1 12
9 6 4 45
10 5 10 66
库(dplyr)
种子集(123)
变异百分比(s=滞后(X1,默认值=1)+滞后(X1,默认值=1)*X2)
x1x2s
1 3 10 11
2 8 5 18
3 5 7 64
4 9 6 35
5 10 2 27
6 1 9 100
7 6 3 4
8 9 1 12
9 6 4 45
10 5 10 66
理想情况下,我需要这样的东西:
library(dplyr)
set.seed(123)
a <- data.frame(replicate(2,sample(1:10,10,rep = TRUE)))
a %>% mutate(s = lag(s, default = 1) +lag(s, default = 1) * X2)
X1 X2 s
1 3 10 11
2 8 5 66
3 5 7 528
4 9 6 3696
库(dplyr)
种子集(123)
a%变异(s=滞后(s,默认值=1)+滞后(s,默认值=1)*X2)
x1x2s
1 3 10 11
2 8 5 66
3 5 7 528
4 9 6 3696
但这会导致一个问题,因为s没有定义
任何建议都将不胜感激
问候,,
Aksel现在使用
进行
循环还不错
a$s <- 0
for (i in 1:nrow(a)) {
if (i == 1)
a$s[i] = a$X2[i] + 1
else
a$s[i] = a$s[i-1] + (a$s[i-1] * a$X2[i])
}
a
# X1 X2 s
#1 3 10 11
#2 8 5 66
#3 5 7 528
#4 9 6 3696
#5 10 2 11088
#6 1 9 110880
#7 6 3 443520
#8 9 1 887040
#9 6 4 4435200
#10 5 10 48787200
a$s