【发布时间】:2020-03-12 15:01:53
【问题描述】:
我目前正在转换数据集,以获取数据表中每个先前观察的结果。这是在 excel 中很容易实现的东西,但我正在努力在 data.table 中找到一个非递归解决方案。简写形式的数据,ID 在真实数据中还有数千个级别和数千个 x。每个 ID 都有相同数量的 X。
| index | ID | X |
|-------|----|------|
| 1 | 1 | 0.8 |
| 2 | 1 | 0.75 |
| 3 | 1 | 0.72 |
| 4 | 2 | 0.9 |
| 5 | 2 | 0.5 |
| 6 | 2 | 0.45 |
我想要的结果如下
| index | ID | X | product |
|-------|----|------|---------|
| 1 | 1 | 0.8 | 0.8 |
| 2 | 1 | 0.75 | 0.6 |
| 3 | 1 | 0.72 | 0.432 |
| 4 | 2 | 0.9 | 0.9 |
| 5 | 2 | 0.5 | 0.45 |
| 6 | 2 | 0.45 | 0.2025 |
其中 product 等于 x 乘以该特定 ID 的所有先前 x 值。这可以在 for 循环中完成,但我正在寻找一种利用 data.table 的解决方案,以便可以在集群上运行。
可重现的数据:
df <- fread('
index ID X
1 1 0.8
2 1 0.75
3 1 0.72
4 2 0.9
5 2 0.5
6 2 0.45
')
【问题讨论】:
标签: r data.table