如何在 R 中的列上重复计算?
How do I repeat a calculation on a column in R?
我卡住了;我一直在玩循环(我知道,这在 R 中不是一个有利的选择)并且在我的查询中使用了 apply 函数。
我有一列数据记录了富时指数的一天是盈利还是亏损。我想将显示此列的前 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 <- apply(DaysDifference$PosInd, 1, function(i) sum(DaysDifference$PosId[i:(i+2)]/3))
trial 没有正确迭代向量,并给出了与 i:(i+2)
.
的第一次迭代计算相同的结果
任何帮助,一如既往,非常感谢。
卡尔文
看看zoo
包
library(zoo)
rollmean(DaysDifference$FTSE.Direction > 0, k = 3, na.pad = TRUE)
我卡住了;我一直在玩循环(我知道,这在 R 中不是一个有利的选择)并且在我的查询中使用了 apply 函数。
我有一列数据记录了富时指数的一天是盈利还是亏损。我想将显示此列的前 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 <- apply(DaysDifference$PosInd, 1, function(i) sum(DaysDifference$PosId[i:(i+2)]/3))
trial 没有正确迭代向量,并给出了与 i:(i+2)
.
任何帮助,一如既往,非常感谢。
卡尔文
看看zoo
包
library(zoo)
rollmean(DaysDifference$FTSE.Direction > 0, k = 3, na.pad = TRUE)