2011-05-03 6 views
5

시계열의 머리을 삭제하고 그래서 같이 quantmod 패키지를 사용quantmod : buildData은 (na.rm = FALSE는) 내가 FRED 시리즈에서 데이터 집합을 만들려면

library(quantmod) 
getSymbols(c('FEDFUNDS', 'GDPPOT', 'DGS10'), src='FRED') 
dat <- buildData(FEDFUNDS ~ DGS10 + GDPPOT, na.rm=FALSE) 

은 내가 필요한 것은 XTS입니다 가장 긴 시간 계열의 모든 날짜에 대한 관측치가있는 객체 및 더 짧은 시간 시리즈를 채우기위한 누락 된 값. 위의 예에서 나는 다음을 얻습니다 :

> head(dat, 2) 
      FEDFUNDS DGS10 GDPPOT 
1962-10-01  2.90 3.93 3141.6 
1963-01-01  2.92 NA 3173.9 
> head(FEDFUNDS, 2) 
      FEDFUNDS 
1954-07-01  0.80 
1954-08-01  1.22 
> head(DGS10, 2) 
      DGS10 
1962-01-02 4.06 
1962-01-03 4.03 
> head(GDPPOT, 2) 
      GDPPOT 
1949-01-01 1864.8 
1949-04-01 1885.2 

FEDFUNDS 시리즈는 DGS10 시리즈의 최소 날짜 값과 일치하도록 잘 렸습니다. 나는 buildData() 함수의 편리함을 좋아하며,이 작업을 위해이 함수를 사용하고 싶지만, 어떻게하면 관측치를 잃어 버릴 수 있는지 궁금합니다.

시간 내 주셔서 감사합니다.

편집 : 병합을 사용하고 싶지 않은 이유는 일부 데이터 계열의주기가 다르며 buildData()이 자동으로 처리한다는 것입니다.

답변

5

buildDataDGS10 휴일에 NA 인의 (그 해의 첫 날을 포함하여) 때문에 특히 당신을 포기하지 않습니다 일요일에 입장 할 수 없습니다. 당신이 질문을 가지고 무엇을하려고 그렇다면, 당신은 datzoo 객체가 아닌 xts 인 2006 년의 전체를 포함한 여러 선 누락, 다음과 같은 기이에게

> tail(dat,16) 
      FEDFUNDS DGS10 GDPPOT 
2005-07-01  3.26 4.06 12611.7 
2007-01-01  5.25 NA 13072.4 
2007-10-01  4.76 4.56 13314.1 
2008-01-01  3.94 NA 13393.0 
2008-04-01  2.28 3.57 13471.2 
2008-07-01  2.01 4.01 13547.1 
2008-10-01  0.97 3.77 13619.9 
2009-01-01  0.15 NA 13689.2 
2009-04-01  0.15 2.68 13753.1 
2009-07-01  0.16 3.55 13813.7 
2009-10-01  0.12 3.21 13872.0 
2010-01-01  0.11 NA 13928.2 
2010-04-01  0.20 3.89 13985.8 
2010-07-01  0.18 2.96 14044.7 
2010-10-01  0.19 2.54 14109.8 
2011-04-01  0.10 3.46 14247.2 

를 얻을.

GDPPOT을 사용하는 경우 아마도 분기 별 데이터를 사용하고 싶을 것입니다. 시도해보십시오.

FEDFUNDSq <- aggregate(na.omit(FEDFUNDS), as.yearqtr, first) 
DGS10q <- aggregate(na.omit(DGS10), as.yearqtr, first) 
GDPPOTq <- aggregate(na.omit(GDPPOT), as.yearqtr, first) 
dat2 <- as.xts(merge(FEDFUNDSq, DGS10q, GDPPOTq)) 

as.xts()은 요청한 사용자에게만 표시됩니다. 이렇게하면 NA을 원하는 위치에 표시 할 수 있습니다. 예를 들어 다음 꼬리가 다음 꼬리보다 좋아 보인다.

> head(tail(dat2,66),25) 
     FEDFUNDSq DGS10q GDPPOTq 
2005 Q3  3.26 4.06 12611.7 
2005 Q4  3.78 4.39 12684.6 
2006 Q1  4.29 4.37 12758.9 
2006 Q2  4.79 4.88 12835.2 
2006 Q3  5.24 5.15 12913.0 
2006 Q4  5.25 4.62 12992.1 
2007 Q1  5.25 4.68 13072.4 
2007 Q2  5.25 4.65 13153.1 
2007 Q3  5.26 5.00 13233.9 
2007 Q4  4.76 4.56 13314.1 
2008 Q1  3.94 3.91 13393.0 
2008 Q2  2.28 3.57 13471.2 
2008 Q3  2.01 4.01 13547.1 
2008 Q4  0.97 3.77 13619.9 
2009 Q1  0.15 2.46 13689.2 
2009 Q2  0.15 2.68 13753.1 
2009 Q3  0.16 3.55 13813.7 
2009 Q4  0.12 3.21 13872.0 
2010 Q1  0.11 3.85 13928.2 
2010 Q2  0.20 3.89 13985.8 
2010 Q3  0.18 2.96 14044.7 
2010 Q4  0.19 2.54 14109.8 
2011 Q1  0.17 3.36 14178.3 
2011 Q2  0.10 3.46 14247.2 
2011 Q3  NA  NA 14316.8 
+0

훌륭한 작품입니다. 감사! – Vincent

5

자동 NA로 채 웁니다 때문에 당신은 merge.xts을 사용할 수 있습니다 당신이 원하는

library(quantmod) 
getSymbols('FEDFUNDS;DGS10'head(, src='FRED') 
dat <- merge(FEDFUNDS, DGS10) 
head(dat) 
#   FEDFUNDS DGS10 
# 1954-07-01  0.80 NA 
# 1954-08-01  1.22 NA 
# 1954-09-01  1.06 NA 
# 1954-10-01  0.85 NA 
# 1954-11-01  0.83 NA 
# 1954-12-01  1.28 NA 
+0

+1 내가 사과 일반적으로 – Andrie

+1

에 병합하고, quantmod의 선 (善)을 위해, 내 예는 충분한 정보를하지 않았다. buildData()를 사용하려는 이유는 내 데이터 계열 중 일부가 다른 주기성을 가지기 때문에 buildData()가이를 자동으로 처리하기 때문입니다. 병합을 사용하면 분기 별 데이터를 처리하기 위해 추가 조작이 필요합니다. 예제를 단순화하기 위해 너무 많은 것을 사용했습니다. 이것은 이제 원래 게시물에 대한 편집 내용에 반영됩니다. – Vincent

+0

@ 빈센트 : 좀 더 복잡합니다. :) 나는 오늘 밤에 그것을 나중에 다시 시도 할 것이다. –