R Studio:如何计算来自不同行索引的数字(tidyverse)

R Studio:如何计算来自不同行索引的数字(tidyverse),r,dplyr,tidyverse,R,Dplyr,Tidyverse,我有一个如下所示的数据帧: +-------+-------+ | value | index | +-------+-------+ | 10 | 0.05 | +-------+-------+ | 20 | 0.1 | +-------+-------+ | 30 | 0.2 | +-------+-------+ | 40 | 0.3 | +-------+-------+ | 50 | 0.4 | +-------+-------+ |

我有一个如下所示的数据帧:

+-------+-------+
| value | index |
+-------+-------+
| 10    | 0.05  |
+-------+-------+
| 20    | 0.1   |
+-------+-------+
| 30    | 0.2   |
+-------+-------+
| 40    | 0.3   |
+-------+-------+
| 50    | 0.4   |
+-------+-------+
| 60    | 0.5   |
+-------+-------+
+-------+-------+-----------------+
| value | index | value_multipled |
+-------+-------+-----------------+
| 10    | 0.05  | 0               |
+-------+-------+-----------------+
| 20    | 0.1   | 1               |
+-------+-------+-----------------+
| 30    | 0.2   | 4               |
+-------+-------+-----------------+
| 40    | 0.3   | 9               |
+-------+-------+-----------------+
| 50    | 0.4   | 16              |
+-------+-------+-----------------+
| 60    | 0.5   | 25              |
+-------+-------+-----------------+
我想创建一个新列,其中每行I的值I-1乘以索引I。如何计算,请参见下表:

+-------+-------+-----------------+
| value | index | value_multipled |
+-------+-------+-----------------+
| 10    | 0.05  | = 0 * 0.05 = 0  |
+-------+-------+-----------------+
| 20    | 0.1   | = 10 * 0.1 = 1  |
+-------+-------+-----------------+
| 30    | 0.2   | = 20 * 0.2 = 4  |
+-------+-------+-----------------+
| 40    | 0.3   | = 30 * 0.3 = 9  |
+-------+-------+-----------------+
| 50    | 0.4   | = 40 * 0.4 = 16 |
+-------+-------+-----------------+
| 60    | 0.5   | = 50 * 0.5 = 25 |
+-------+-------+-----------------+
最终的表格如下所示:

+-------+-------+
| value | index |
+-------+-------+
| 10    | 0.05  |
+-------+-------+
| 20    | 0.1   |
+-------+-------+
| 30    | 0.2   |
+-------+-------+
| 40    | 0.3   |
+-------+-------+
| 50    | 0.4   |
+-------+-------+
| 60    | 0.5   |
+-------+-------+
+-------+-------+-----------------+
| value | index | value_multipled |
+-------+-------+-----------------+
| 10    | 0.05  | 0               |
+-------+-------+-----------------+
| 20    | 0.1   | 1               |
+-------+-------+-----------------+
| 30    | 0.2   | 4               |
+-------+-------+-----------------+
| 40    | 0.3   | 9               |
+-------+-------+-----------------+
| 50    | 0.4   | 16              |
+-------+-------+-----------------+
| 60    | 0.5   | 25              |
+-------+-------+-----------------+
非常感谢你的帮助

我们可以使用滞后

数据 使用head的base R选项

给予

df1 <- data.frame(value = c(10, 20, 30, 40, 50, 60), 
      index = c(0.05, 0.1, 0.2, 0.3, 0.4, 0.5))
transform(
  df,
  value_multipled = index * c(0, head(value, -1))
)
  value index value_multipled
1    10  0.05               0
2    20  0.10               1
3    30  0.20               4
4    40  0.30               9
5    50  0.40              16
6    60  0.50              25