首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用for循环根据多列的日增长率迭代增长

如何使用for循环根据多列的日增长率迭代增长
EN

Stack Overflow用户
提问于 2022-06-23 23:27:48
回答 1查看 32关注 0票数 1

我有一个df,每种A,B和C的生长率大约为60天。df1就是一个例子。

代码语言:javascript
复制
df1 <- data.frame(Day = c('59','60' ), A= c('.1', '.6'), B= c('.2', '.5'), C=c('.3','.4'))

df1=Growthrates

我正在根据给定的初始细胞数(1000)计算每天的细胞数。我想要一个df,它使用来自df1的每个物种的初始细胞计数和相应的日增长率,这样df2中每一列(A、B或C)下的计算细胞数都是用前一天的细胞计数和“今天”的速率来计算的。

使用上面的例子,我可以从第58天的第二个df (df2)开始(而不是df1中的59 ),然后计算每个值。

代码语言:javascript
复制
df2 <- data.frame(Day = c('58','59','60' ), A= c('1000', '1100', '1760'), B= c('1000','1200', '18000'), C=c('1000','1300','1820'))

df2=calculated单元数(初始输入为1000)。如果计算成功,所提供的其余值将是预期值。

对于任何特定物种,简单的方程式如下:

Day59 count=细胞计数(第58天)*( 1+growth速率(59天))

在初始单元格计数之后,它将需要使用新生成的值作为下一次计算的输入。

细胞计数(第60天)=细胞计数(第59天)*( 1+growth率(第60天))

我很难把它转换成一个for循环。任何帮助都是非常感谢的。

提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-24 00:17:29

代码语言:javascript
复制
library(dplyr)
df2 <- df1 %>% mutate(across(-Day, ~1000*cumprod(as.numeric(.x)+1))) %>%
  add_row(Day = '58', A = 1000, B = 1000, C = 1000, .before = 1)

  Day    A    B    C
1  58 1000 1000 1000
2  59 1100 1200 1300
3  60 1760 1800 1820

编辑:我认为这样做更好,因为它实际上使用了第58天的值,以防变化:

代码语言:javascript
复制
data.frame(Day = '58', A = 1000, B = 2000, C = 5000) %>% # or other values
  bind_rows(df1 %>% mutate(across(-Day, ~(as.numeric(.x)+1)))) %>%
  mutate(across(-Day, ~cumprod(.x)))

  Day    A    B    C
1  58 1000 2000 5000
2  59 1100 2400 6500
3  60 1760 3600 9100
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72737576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档