根据新创建列的先前值填充新列
Populating a new column based the value of the prior value of the newly created column
我有一个包含 2 列的现有数据框。我想根据这些规范创建第三列:
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, 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
理想情况下,我需要这样的东西:
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
但这会导致问题,因为 s 未定义。
非常感谢任何建议。
此致,
阿克塞尔
然后
使用 for
循环是个不错的时机
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
我有一个包含 2 列的现有数据框。我想根据这些规范创建第三列:
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, 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
理想情况下,我需要这样的东西:
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
但这会导致问题,因为 s 未定义。
非常感谢任何建议。
此致, 阿克塞尔
然后
使用for
循环是个不错的时机
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