我使用read.csv加载了一个数据集。这包含第一行中的标题,然后是不同列中的一堆股票价格。
然后我尝试执行滚动分析(平均值,SD或任何其他简单的统计函数,并在我定义的矩阵中为其分配一个元素)
但是当我写信给csv
时,我一直在为所有细胞获得NA我的代码
{
APD = read.table(file="C:\\Path\\Pasted Data Temp.csv",head=TRUE,sep=",",blank.lines.skip = TRUE,row.names = NULL);
DMA = matrix(nrow=dim(APD)[1]+25,ncol=dim(APD)[2]+25)
a = ncol(APD);
DMAno = 20;
for(i in 3:a) {
z = length(APD[1])
for(j in DMAno:z)
{
DMA[[i][j]] <- mean(APD$ABNL[j-DMAno+2:j])
}
}
}
答案 0 :(得分:0)
正如agstudy所说,rollapply可能是最好的选择,因为它会非常快。
至于你的代码:
你需要(j-DMAno+2):j
和R一个子集矩阵中的一些括号,方式稍有不同,即第i列和第j行的DMA通过DMA[j,i]
加入。 data.frame$x[]
会产生一些冗余的子内容。试试这个:
for(i in 3:a) {
z = length(APD[1])
for(j in DMAno:z)
{
DMA[j,i] <- mean(APD[(j-DMAno+2):j,"ABNL"])
}
}
}