r - 随着时间的推移计算具有起源和演变的数值特征
问题描述
我有 2 个输入数据框:
- 一是一些数值特征的由来
- 其次是该功能随时间的演变
origin <- data.frame("year"=2017,"a"=5,"b"=2)
evolutions <- data.frame("year"=c(2018,2019,2020),"a"=c(1.2,1.5,2),"b"=c(0.5,2,2))
我需要的是恢复每个时期的数字特征的值
output <- data.frame("year"=c(2017,2018,2019,2020),"a"=c(5,6,9,18),"b"=c(2,1,2,4))
看起来很简单,我基本上需要逐步将起源乘以进化。但是,我找不到有效的方法来做到这一点:目前我正在使用 for 循环进行循环,但我对此并不满意。任何想法 ?任何包解决方案(dplyr
,data.table
甚至base
)都会很棒。
谢谢 !
解决方案
遵循评论中@Henrik 的提议,这里有一个解决方案,在 colnames 上有一个循环,假设 date 位于第一个位置并且两个输入共享相同的 colnames :
output <- data.frame("year" = c(origin$year, evolutions$year),
sapply(colnames(origin)[-1], function(x) cumprod(c(origin[[x]], evolutions[[x]]))))
推荐阅读
- google-sheets - 根据小于 100 的小数增加一个数字?
- spring-cloud-contract - 自动生成的测试类 ContractCerifierTest.java 无法编译 - 不是语句
- python - 使用 scipy.integrate.solve_BVP 无法将操作数与形状 (12,999) (12,1000) 一起广播
- python - sklearn Logistic Regression ValueError: X 每个样本有 42 个特征;期待 1423
- javascript - 如何生成带有样式的 PDF 并将其上传到服务器(Jquery)
- django - 在 Django 中查询 easyaudit 中间件模型
- sql-server - 使用触发器维护日志以进行更新
- javascript - 将 Input 的值传递给 handleMethod
- c++ - 链接提取和插入,包围
- regex - 与正则表达式查询相关