gpt4 book ai didi

r - 如何将观察值乘以先前的观察值,但前提是某个条件为真

转载 作者:行者123 更新时间:2023-12-04 04:07:28 25 4
gpt4 key购买 nike

我有包含变量 start 和 weight 的数据。我想创建一个新的权重,将原始权重乘以先前的权重,然后将这个新创建的权重乘以先前的权重,依此类推,直到数据集结束。我只希望为 start 大于 0 的所有观察值计算这些新权重。

start<-c(0,1,2,3,4,0,1,0,1,0,1,0,0,0,1)
weight<-c(1.427,1.073,1.074,1.074,15.004,1.428,1.073,1.439,1.074,1.416,1.463,1.439,1.074,1.439,1.451)
data<-as.data.frame(cbind(start,weight))

到目前为止,我运行 for 循环的代码:
for (i in 1:4){
data$new_weight<-ifelse(data$start==i, data$weight * shift(data$weight, 1L, type="lag"), data$weight)
}

以这个数据框结束:
new_weight<-c(1.427,1.531,1.645,1.766,26.496,1.428,1.531,1.439,1.546,1.416,1.463,1.439,1.546,1.439,1.451)
data<-cbind(data, new_weight)
data

最佳答案

也许,这有帮助

library(dplyr)
data %>%
group_by(grp = cumsum(start == 0)) %>%
mutate(weight = cumprod(weight)) %>%
ungroup %>%
select(-grp)

关于r - 如何将观察值乘以先前的观察值,但前提是某个条件为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62270725/

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