R,条件累加总和为最大值

问题描述 投票:0回答:1
df <- data.frame("day" = 1:20, 
                   "LATP"= c(.08,.11,.12,.09,.14,.06,.10,.11,.13,.08,.15,.08,.11,.14,.08,.11,.14,.07,.11,.12), 
                   "LATP2"  = c(0,0,0,1,0,0,0,1,1,0,0,0,0,1,0,0,0,1,0,0))

这里是一个示例数据框。我正在尝试根据是否已触发LATP2(= 1)中的二进制函数来累计LATP列中的值,直到最大值为1。每当二进制函数被触发时,即使它们重叠,我也需要做一个累加的总和。我想最好是制作一个新的子集数据框,该数据框将带来达到1所需的LATP值范围,然后可以按启动它们的二进制事件进行分组?我希望能够绘制每个事件的累积LATP进度。

这是葡萄白粉病疾病压力模型数据框架的子集,LATP是从完全感染到完全感染的潜伏期发展。因此,每个孢子释放(LATP2)事件都会有一个自己的潜伏期,即潜伏期进展的总和。

我会提供一些尝试,但我真的不知道从哪里开始这个问题

欢呼声

r dplyr cumsum
1个回答
0
投票

我们基于'LATP2'的运行长度编码ID创建分组索引,并获得'LATP'的累加总和

library(dplyr)
library(data.table)
df %>%
    group_by(grp = lag(rleid(LATP2), default = 1)) %>% 
    mutate(new = cumsum(LATP))
© www.soinside.com 2019 - 2024. All rights reserved.