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