这是我第一次使用编码 - 不是在财务方面。只是想学习R。
我试图计算Google历史数据的收盘价差异。问题是要应用一个函数(我打赌有很多函数已经预先打包),我只能通过将xts文件的Adjusted price列转换为向量来实现它。
我得到了我想要的东西,但是现在我已经陷入了一个我无法合并回xts文件以查找特定日期的向量:
getSymbols("GOOG")
head(GOOG)
z = as.vector(GOOG$GOOG.Adjusted)
D2D = function (x) {
days = length(x)
delta = numeric(days)
for(i in 2:days){
delta[i] <- (100*((x[i] - x[i - 1])/(x[i - 1])))
}
delta
}
DELTA = D2D(z)
summary(DELTA)
GOOG_DELTA = append(0,DELTA)
merge(GOOG,GOOG_DELTA)
任何提示都将不胜感激。
答案 0 :(得分:3)
无需为此创建自定义函数,xts
和quantmod
已经内置了矢量化函数来执行此操作。我想要的是这个:
merge(GOOG,Ad((GOOG-lag(GOOG,1))/(lag(GOOG,1))))
答案 1 :(得分:0)
与此同时,我认为防止我遇到的问题的具体方法是将xts文件整体转换为data.frame(而不是分隔列向量);在data.frame上执行操作,在尾端将结果合并到原始xts。
这是一种可行的方式(注意:我给第一行的意思是,而不是&#34; NA&#34;):
getSymbols("GOOG")
str(GOOG) #We start with an xts
z = as.data.frame(GOOG$GOOG.Adjusted)
head(z)
D2D = function (x) {
days = nrow(x)
delta = numeric(days)
for(i in 2:days){
delta[i] <- (100*((x[i,1] - x[i - 1,1])/(x[i - 1,1])))
}
delta
}
DELTA = D2D(z)
head(DELTA)
DELTA[1]<-mean(DELTA)
head(DELTA)
summary(DELTA)
GOOG_D2D = merge(GOOG,DELTA)
str(GOOG_D2D) #And we end with an xts file!