我在Excel中有一個計算示例,我需要將其轉換爲R代碼以獲得更大的數據集。將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
f結:
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
不應該'cum_value [3]'是'2.925'?以下所有內容都少於'1'? – DaveTurek
是的,你是對的 - 我沒有正確複製數據列。我現在要修改。謝謝。 – sym246