使用tidyverse创建以恒定速率增加的列

tbadams45

我有一个时间序列的人口,我想比较人口相对于某些增长率的增长方式。因此,我试图创建一个将初始人口值乘以某个恒定增长率,然后将该值乘以相同的恒定增长率等的列。等等。我不能仅仅使用mutate乘以增长率因为它不会使用以前的值。

注意:我已经在下面回答了我自己的问题,但已将其作为资源提供给其他人。如果还有其他方法可以实现相同的目标,那么我将对此感兴趣。

library(ggplot2)
library(tibble)
library(dplyr)

growth_rate <- 0.05 # percent

# the "estimated" column is what I want.
df <- tibble(year = seq(2000, 2005, by = 1),
             population = seq(1, 2, length = 6),
             estimated = c(1.00, 1.05, 1.10, 1.16, 1.22, 1.28))
MKR

purrr::accumulate当使用以下简单公式可以实现相同的目的时,为什么需要

library(tidyverse)
growth_rate <- 0.05 # percent
df %>% mutate(Calculated = first(estimated)*((1+growth_rate)^(row_number()-1)))
# # A tibble: 6 x 4
# year population estimated Calculated
# <dbl>      <dbl>     <dbl>      <dbl>
# 1  2000       1.00      1.00       1.00
# 2  2001       1.20      1.05       1.05
# 3  2002       1.40      1.10       1.10
# 4  2003       1.60      1.16       1.16
# 5  2004       1.80      1.22       1.22
# 6  2005       2.00      1.28       1.28

编辑

@Frank已经在上面的答案之一中指出了comment使用复合利率进行计算growth_rate

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用恒定模式创建具有许多列的模型

如何使用perf_event_open以恒定的速率采样?

使用循环以每个恒定速率向图形添加新点

设置NetLogo显示速率恒定

使用具有恒定值的var在Spark DataFrame中创建新列

如何使用 tidyverse 根据其他列中的事件数创建列?

我可以使用 ffmpeg 将可变帧速率视频转换为恒定帧速率而无需重新编码吗?

使用 tidyverse 改变特定列

使用tidyverse / dplyr从其他列子字符串创建列

如果为 FALSE,则增加列,如果为 TRUE,则停止增加(tidyverse,dplyr,R)

如何使用两个恒定颜色值创建或条件?

创建恒定大小的矢量的恒定大小的矢量

ffmpeg恒定速率因数,用于不同的webm质量

尝试以恒定速率从列表列表中减去

CADisplayLink无法在模拟器中获得恒定的帧速率

以恒定速率高精度循环以进行信号采样

使用 tidyverse 整理多组宽列的表格

使用tidyverse,如何动态生成新列?

以几 Kbit/s 的恒定速率发送 UDP 消息的程序以 3Mbit/s 的速率发送它们?

如何使用 str 检测正则表达式创建一个带有 tidyverse 的新列

R:使用数据屏蔽函数/tidyverse 引用先前在同一自定义函数中创建的列

在tidyverse中,根据现有变量创建seq()列

使用tidyverse语言添加列,但使用列号代替列名

在Keras中创建恒定值

使用 tidyverse 和 sapply 在列表上创建函数

使用PVectors使速度恒定

使用恒定空间的fprintf

tidyverse解决方案,用于将多个列重新编码为新的列名后缀增加一的列

如何使用索引增加列的大小