gpt4 book ai didi

r - 将 Excel 公式转换为使用前一行结果的 R 代码

转载 作者:行者123 更新时间:2023-12-04 21:57:58 24 4
gpt4 key购买 nike

我在 Excel 中有一个示例计算,我需要将其转换为 R 代码以获得更大的数据集。

我的数据应该是这样的:

time value  cum_value  floor scaled_time
0 0 0 0 0
1 1 1 1 1
2 0.975 1.975 1 1
3 0.95 2.925 3 2.038961039
4 0.925 3.85 4 3.098982099
5 0.9 4.75 5 4.185278042
6 0.875 5.625 6 5.302030016
7 0.85 6.475 7 6.453196107

在 Excel 中使用这种类型的公式计算了“缩放时间”列(显示的示例是第 6 行):
=scaled_time5+((floor6-floor5)/((cum_value6-floor5)/(time6-scaled_time5)))

由于这指的是前几行中的单元格,因此我无法在 R 中对此进行编码。

这是我到目前为止所拥有的(使用 data.table shift 功能:
  DF$Scaled_Time=shift(DF$Scaled_Time, 1L, "lag")+
((DF$Floor-shift(DF$Floor,1L,"lag"))/
((DF$Cum_Value-shift(DF$Floor,1L,"lag"))/
(DF$Time-shift(DF$Scaled_Time, 1L, "lag"))))

这不起作用,并出现此错误:
Error in `$<-.data.frame`(`*tmp*`, "Scaled_Time", value = numeric(0)) : 
replacement has 0 rows, DF has 2246400
In addition: Warning messages:
1: In shift(DF$Floor, 1L, "lag") : NAs introduced by coercion
2: In shift(DF$Floor, 1L, "lag") : NAs introduced by coercion

最佳答案

您可以使用 shift函数来自 data.table .

df$result = 2.038961
df[, result := shift(result)+((floor-shift(floor))/((cum_value-shift(floor))/(time-shift(result)))) ]

关于r - 将 Excel 公式转换为使用前一行结果的 R 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40738626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com