【发布时间】:2019-02-02 12:37:56
【问题描述】:
以下是我目前在 Excel 中计算的一些数据。
col_A col _B col_C col_D col_E col_F col_G
-1.5% 0.010 1.00 1 1.00 - -
-5.4% 0.024 1.00 1 1.00 0.01 -0.00
-7.9% 0.036 1.00 1 1.00 0.02 -0.00
-12.7% 0.052 0.99 1 0.99 0.06 -0.01
-4.6% 0.049 0.98 1 0.98 0.19 -0.01
-8.3% 0.051 0.95 1 0.95 0.39 -0.03
-7.3% 0.052 0.88 1 0.88 1.00 -0.07
-9.2% 0.055 0.69 1 0.69 2.31 -0.21
-7.9% 0.055 0.38 1 0.38 5.63 -0.44
-2.2% 0.051 0.29 1 0.29 11.13 -0.24
我一直在尝试使用 data.table 在 R 中执行计算。我遇到的问题是 data.table 按列执行计算。由于依赖于前一行值的结果,我需要逐行执行计算。下面给出了计算列的 Excel 公式,“T”表示“当前行”,“T-1”表示“上一行”
col_C: (col_C.T-1) * (1 + col_G.T)
col_D:最大值(Col_C.T,col_D.T-1)
col_E: (col_C.T / col_D.T)
col_F: 最大值 ((1 - (col_C.T-1 / col_D.T-1)) / col B.T-1), 0.01)
col_G: col_A * col_F
非常感谢任何帮助。
【问题讨论】:
-
我假设您正在寻找
data.table::shift来滞后/领先条目? -
我发现使用 data.table::shift 取得了一些成功。但是,每一列的计算都依赖于上一行的结果,没有正确捕获。
-
(1)
shift允许您根据以前的 row 条目计算值,所以我想shift是这里的方法; (2) 但是,我确实很难理解您的“规则”,这在我看来是循环的。例如,C 列中的条目基于 G 列,而 G 列又依赖于 F 列,而 F 列又依赖于 C 列。 -
是的,令人头疼的是依赖关系。请注意,它会从 T 跳转到 T-1,例如当 F 回到 C 时。
-
是的,我明白,但你的问题陈述不是很清楚(对我来说);我们仍然需要某些列的初始值。例如,C、D 和 E 列的第一行值是否总是
1.0?
标签: r data.table