R 沿行传播计算

R 沿行传播计算,r,dplyr,na,R,Dplyr,Na,使用以下数据,如何传播 计算以填充两个NA df x ed0 kd #> 1 0 0.2432977 -0.03527368 #>230NA-0.04314517 #>340NA-0.04057662 因此,第一个NA的值为30+df$ed0[1]+df$kd[1],第二个NA的值为40+df$ed0[2](在上一步计算)+df$kd[2]。谢谢。在base R中有一个相当简单的方法 with(df, cumsum(x + ifelse(is.na(ed0), 0, ed0) + c(0,


使用以下数据,如何传播 计算以填充两个
NA

df x ed0 kd
#> 1  0 0.2432977 -0.03527368
#>230NA-0.04314517
#>340NA-0.04057662

因此,第一个NA的值为30+df$ed0[1]+df$kd[1],第二个NA的值为40+df$ed0[2](在上一步计算)+df$kd[2]。谢谢。

在base R中有一个相当简单的方法

with(df, cumsum(x + ifelse(is.na(ed0), 0, ed0) + c(0, head(kd, -1))))
[1]  0.2432977 30.2080240 70.1648789

为了分解这个问题,x保持原样,
c(0,head(kd,-1))
设置kd的滞后向量,其中初始值为0
ifelse(is.na(ed0),0,ed0)
检查ed0的每个元素是否为na,如果为TRUE,则将其替换为0。将这三个项相加,并将得到的向量赋给
cumsum
,以产生累积和。最后,
with
用于减少键入。

我刚刚更改了代码以调整x项,因为我认为它不应该像以前那样滞后。