2015-09-04 4 views
1

У меня есть дневная цена закрытия в объекте xts. То, что я пытаюсь сделать, это получить последнюю цену закрытия недели. Большую часть времени это будет пятница, но иногда это может быть четверг или даже более редкая среда.R xts Временные ряды, подмножество к последнему рабочему дню недели

Я пытался подмножить это решение, найденное here, но не повезло. Кто-нибудь видел или нашел решение чего-то вокруг этого.

Заранее спасибо.

+0

Просьба представить воспроизводимый пример. – LyzandeR

ответ

1

Преобразование временных рядов в неделю OHLC с to.weekly. Еженедельная цена закрытия должна быть с последнего торгового дня недели - будь то четверг или среда.

Например, 7/4/2014 (выходной в США) был в пятницу, поэтому в тот день не было торгов. Следующий код возвращает наблюдения за 6/27 (пятница), 7/3 (закрытие в четверг) и 7/11 (пятница).

getSymbols("SPY") 
Cl(to.weekly(SPY))['2014-06-27/2014-07-11'] 
#   SPY.Close 
# 2014-06-27 195.82 
# 2014-07-03 198.20 
# 2014-07-11 196.61 
+0

Awesome !! Мне нравится этот сайт! Спасибо за вашу помощь –

+1

@AaronSoderstrom Отлично! Не стесняйтесь принимать ответ, если они оба работают на вас. –

0

Если ваши данные не содержат только будни (без выходных), то вы можете использовать это:

require(quantmod) 
getSymbols("SPY") 
spy <- do.call(rbind, lapply(split(SPY, "weeks"), last)) 
table(weekdays(index(spy))) 
# Friday Thursday 
#  436  17 

Если данные содержат выходные, то вам нужно удалить их, прежде чем делать split, lapply, rbind.

data(sample_matrix) 
x <- as.xts(sample_matrix) 
x <- x[.indexwday(x) %in% 1:5] 
y <- do.call(rbind, lapply(split(x, "weeks"), last)) 
+0

Это тоже сработало, спасибо! –

Смежные вопросы