gpt4 book ai didi

r - 如何将基本 r 中基于滞后的列转换转换为 dplyr 管道?

转载 作者:行者123 更新时间:2023-12-02 19:49:21 25 4
gpt4 key购买 nike

我有一段代码,在转换为 dplyr 管道时遇到了很多麻烦。

给定以下数据框:

library(tidyverse)
tb <- tribble(
~time, ~hazard_0, ~hazard_1,
7, 0.04768284, 0.10710033,
8, 0.02412410, 0.05590856,
9, 0.09269841, 0.19662787,
10, 0.13912236, 0.27908998,
11, 0.16053845, 0.31418869,
12, 0.23522180, 0.42422854

)
tb
#> # A tibble: 6 x 3
#> time hazard_0 hazard_1
#> <dbl> <dbl> <dbl>
#> 1 7 0.0477 0.107
#> 2 8 0.0241 0.0559
#> 3 9 0.0927 0.197
#> 4 10 0.139 0.279
#> 5 11 0.161 0.314
#> 6 12 0.235 0.424

我想执行以下例程:

tb$surv_0<-c(1:6)
tb$surv_1<-c(1:6)
tb$surv_0[1]<-1-tb$hazard_0[1]
tb$surv_1[1]<-1-tb$hazard_1[1]
for(i in 2:6) {
tb$surv_0[i] = tb$surv_0[i-1]*(1-tb$hazard_0[i])
tb$surv_1[i] = tb$surv_1[i-1]*(1-tb$hazard_1[i])
}
tb
#> # A tibble: 6 x 5
#> time hazard_0 hazard_1 surv_0 surv_1
#> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 7 0.0477 0.107 0.952 0.893
#> 2 8 0.0241 0.0559 0.929 0.843
#> 3 9 0.0927 0.197 0.843 0.677
#> 4 10 0.139 0.279 0.726 0.488
#> 5 11 0.161 0.314 0.609 0.335
#> 6 12 0.235 0.424 0.466 0.193

surv_0surv_1 的例程相同。

reprex package于2019年12月4日创建(v0.3.0)

最佳答案

cumprod 是您正在寻找的函数。

tb %>% mutate(surv_0 = cumprod(1 - hazard_0), surv_1 = cumprod(1 - hazard_1))

请注意,这取决于数据的顺序是否正确。

关于r - 如何将基本 r 中基于滞后的列转换转换为 dplyr 管道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59185392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com