2017-04-19 6 views
0

これは私が計算することを目指しています出力されますデータフレームと私は認識しています計算を、やってはになります最初の行のためにそれforループを使用しないデータフレームで行方向の計算を行うためにどのようにR

STOCKsbyQuarter_LOCF_Ticker <- subset(STOCKsbyQuarter_LOCF, STOCKsbyQuarter_LOCF$Ticker == input$STOCKTickers) 

for(i in 1:length(STOCKsbyQuarter_LOCF_Ticker$ROIC)){  
    STOCKsbyQuarter_LOCF_Ticker$ROICDelta <- (STOCKsbyQuarter_LOCF_Ticker$ROIC[i+1] - STOCKsbyQuarter_LOCF_Ticker$ROIC[1])/
               (STOCKsbyQuarter_LOCF_Ticker$date[i+1] - STOCKsbyQuarter_LOCF_Ticker$date[1])  
} 

答えて

2
df <- STOCKsbyQuarter_LOCF_Ticker 
df$ROIC_Delta <- (df$ROIC - df$ROIC[1])/(df$Date - df$Date[1]) 

ROIC_Deltaを行うための最善の方法ではありません3210。適切な値で置き換えることができます。

+0

ありがとうございます!それは働いた! – ForeverLearner

1
library(data.table) 
dt = setDT(STOCKsbyQuarter_LOCF_Ticker) 

dt[ , "ROIC Delta" := (ROIC - shift(ROIC))/as.numeric(difftime(Date, shift(Date),units = c("days")))] 
+1

@ForeverLearner ROICデルタは、最初のROICと日付の値から計算されるはずですか?またはpreivous行ですか?上のコードは前の行です。最初にshift(x)をx [1]に変更したい場合。 – Kristofersen

+0

最初の値から計算され、はいありがとうございます! – ForeverLearner

関連する問題