2013-02-26 1 views
0

У меня есть объекты xts, которые являются yearqtr (1990 Q1 2012 Q3). Я хочу работать с данными, идущими до 3-го квартала 2011 года. Я попробовал несколько вещей:R- yearqtr data xts, access single quarters

data["1990::2011:3"] 
data["1990/2012-3"] 

3 рассматривается как ежемесячно, так что, если я использую

data["1990::2012:9] 
data["1990/2012-9] 

я получаю третий квартал. Однако это неудобно. Я хотел бы иметь третий квартал, всякий раз, когда я кладу три в брекеты. Как бы я это написал?

С наилучшими пожеланиями и спасибо заранее

ответ

1

Вы можете использовать subset

subset(data, index(data) >= as.yearqtr('1995 Q1') & index(data) <= as.yearqtr('2011 Q1') ) 

или просто нормальное подмножество с использованием [ ]

data[index(data) >= as.yearqtr('2000 Q1') & index(data) <= as.yearqtr('2011 Q1') ] 
+0

Большое спасибо, это было именно то, что я искал! – siebenkaese

+0

Добро пожаловать. Если вы удовлетворены любым ответом, вы должны его перенести и пометить. http://stackoverflow.com/faq#howtoask –

0

Попробуйте

data["1990::2011:x"] 

где х = 7 или 8 или 9: они дают все тот же результат.

Вот пример

x <- as.yearqtr(1990 + seq(0, 4*(2013-1990))/4) 
zz <- xts(rnorm(length(x)),x, frequency = 4) 
as.ts(zz["1990::2011:9"]) 
+0

Спасибо за быстрый ответ. Это, конечно, работает, но я получаю информацию о том, какой период времени мне нужен в формате 2012 Q1 в виде строки. Я хотел бы манипулировать этой строкой, чтобы я мог получить соответствующий горизонт. Кажется неудобным преобразовать Q1 в 1, 2 или 3. – siebenkaese

+0

вы можете это сделать, например ..'zz [paste ('1990', as.Date (as.yearqtr («2012 Q3»)), sep = ': : ')] ' – agstudy