【问题标题】:How do I repeat a calculation on a column in R?如何在 R 中的列上重复计算?
【发布时间】:2016-06-19 15:21:48
【问题描述】:

我被困住了;我一直在玩循环(我知道,这在 R 中不是一个有利的选择)并且在我的查询中使用了 apply 函数。

我有一列数据记录了 FTSE 的某一天是盈利还是亏损。我想将显示此列的前 3 行相加并将其除以 3。我想一直重复此操作直到 nrow(DaysDifference)

请在下面找到一个可行的例子;

> FTSE[1:10,]
           FTSE.Open FTSE.High FTSE.Low FTSE.Close FTSE.Volume FTSE.Adjusted
2007-01-01    6220.8    6220.8   6220.8     6220.8           0        6220.8
2007-01-02    6220.8    6312.5   6220.8     6310.9  1074946500        6310.9
2007-01-03    6310.9    6322.0   6296.0     6319.0  1606892700        6319.0
2007-01-04    6319.0    6319.0   6261.0     6287.0  1902875600        6287.0
2007-01-05    6287.0    6287.0   6220.1     6220.1  1622439300        6220.1
2007-01-08    6220.1    6246.0   6187.0     6194.2  1326700900        6194.2
2007-01-09    6194.2    6218.5   6190.4     6196.1  2143699600        6196.1
2007-01-10    6196.1    6196.1   6142.0     6160.7  1881991200        6160.7
2007-01-11    6160.7    6233.1   6130.2     6230.1  2147062400        6230.1
2007-01-12    6230.1    6247.6   6204.3     6239.0  1899868200        6239.0

DaysDifference <- FTSE$FTSE.Open - FTSE$FTSE.Close
    colnames(DaysDifference) <- c('FTSE.Direction')

DaysDifference$PosInd<-ifelse(DaysDifference$FTSE.Direction>0,1,0)
# Identifys if D3P is > and if it is assigns 1, if not assigns 0

    DaysDifference$TestCol<- for (i in (nrow(DaysDifference)-3))
                {sum(DaysDifference$PosInd[i:(i+2)]/3)
                }

上面给了我一个 NULL 结果与 DaysDifference$PosInd ... 然后 ...

x &lt;- apply(DaysDifference$PosInd, 1, function(i) sum(DaysDifference$PosId[i:(i+2)]/3))

trial 未正确迭代向量,并得出与 i:(i+2) 第一次迭代计算的结果相同的结果。

任何帮助,一如既往,非常感谢。

卡尔文

【问题讨论】:

    标签: r loops if-statement vector apply


    【解决方案1】:

    看看zoo

    library(zoo)
    rollmean(DaysDifference$FTSE.Direction > 0, k = 3, na.pad = TRUE)
    

    【讨论】:

      猜你喜欢
      • 2015-04-05
      • 1970-01-01
      • 2017-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-21
      • 2020-07-12
      • 2015-11-02
      相关资源
      最近更新 更多