2017-04-19 90 views
0

这是我的目标来计算输出:如何做一个数据帧逐行计算不使用for循环 - R的

Am trying to do the following ROICDelta Calculations

这是我经历的每一行迭代代码数据框,做计算,这我知道是不是第一行做

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 Delta是否应该计算出第一个ROIC和日期值?或行列?上面的代码做前一行。如果您想先将换档(x)更改为x [1]。 – Kristofersen

+0

这是计算出的第一个值,是的,谢谢! – ForeverLearner