У меня есть список объектов зоопарка. Основными данными являются скорректированное закрытие нескольких символов акций, ежемесячных данных. Каждый объект списка представляет собой отдельный временной ряд для каждого тикера. Я хотел бы рассчитать ежемесячные изменения за каждый месяц в каждом объекте. Если это помогает, вот что заставляет меня до моего желаемого расчета:Как рассчитать процентное изменение объекта зоопарка, используя sapply?
path = 'C:/SectorRotationSymbList072013.csv'
symbs = read.csv(path, header = FALSE, stringsAsFactors = FALSE)
symbs = symbs[, 1]
importData = vector('list', length(symbs))
#Get monthly pricing data.
for (sIdx in 1:length(symbs)){
#Import the data for each symbol into the list.
importData[[sIdx]] = get.hist.quote(instrument= symbs[sIdx],
start="2000-01-01", end="2013-07-15", quote="AdjClose",
provider="yahoo", origin="1970-01-01",
compression="m", retclass="zoo")
}
names(importData) = symbs
я могу получить месяц в течение смены месяца для каждого объекта, используя sapply следующим образом:
monthlyGainsLosses = sapply(importData, diff)
Я хочу относительное изменение, хотя (%). Я пробовал все варианты, которые я могу придумать по простым расчетам, в том числе:
monthlyGainsLosses = sapply(importData, diff/importData)
monthlyGainsLosses = sapply(importData, diff/coreData(importData))
Ни один из них не работает. Для последнего (что кажется мне наиболее логичным) я получаю ошибку:
нецифровой аргумент для двоичного оператора. Может ли кто-нибудь помочь?
Используйте 'diff (..., arithmetic = FALSE) -1'. См. '? Diff.zoo'. –