2014-06-18 2 views
2

xts 개체 내에 보관 된 분기 데이터 범위를 부분 집합으로 만들려고합니다.xts 하위 집합 분기 데이터

나는 설명서를 말한다 페이지의 "XTS 현재 시간 기반 클래스의 기반으로 색인을위한 기능을 제공합니다. 이러한 yearqtr 포함"

데이터의 범위를 생산 할 나는 다음을 시도하지만

있지만 내가 요청한 날짜들.

a = as.xts(ts(rnorm(20), start=c(1980,1), freq=4)) 
a["1983"] # Returns 1983Q2 - 1984Q1 ? 
a["1983-01/"] # Begins in 1983Q2 ? 
a["1981-01/1983-03"] # Returns 1981Q2 - 1983Q2 ? 

a[as.yearqtr("1981 Q2")] # Correct 
a[as.yearqtr("1981 Q1")/as.yearqtr("1983 Q3")] # Does not work 

답변

0

시간대 문제로 보입니다. 색인 클래스가 다른 경우에도 xts 색인은 이고 항상 인 POSIXct 객체입니다. Date 클래스 인덱스와 마찬가지로 yearqtr (및 yearmon) 클래스 인덱스는 "UTC"으로 설정된 시간대를 가져야합니다.

> a <- as.xts(ts(rnorm(20), start=c(1980,1), freq=4), tzone="UTC") 
> a["1983"] 
       [,1] 
1983 Q1 1.4877302 
1983 Q2 -0.4594768 
1983 Q3 -0.1906189 
1983 Q4 -1.1518943 
Warning message: 
timezone of object (UTC) is different than current timezone(). 

경고를 무시해도됩니다. 정말 당신을 귀찮게하는 경우, 당신은을 통해 "UTC"에 R 세션의 시간대를 설정할 수 있습니다

> Sys.setenv(TZ="UTC") 
> a <- as.xts(ts(rnorm(20), start=c(1980,1), freq=4)) 
> a["1983"] 
       [,1] 
1983 Q2 1.84636890 
1983 Q3 -0.06872544 
1983 Q4 -2.29822631 
1984 Q1 -1.46025131 

이 작동하지 않습니다 :

당신이 같은 일을하려고하는 것 같습니다
a[as.yearqtr("1981 Q1")/as.yearqtr("1983 Q3")] # Does not work 

: a["1981 Q1/1983 Q3"]를, "YYYY Qq"는 ISO8601 형식이 아니기 때문에 지원되지 않습니다.

+0

분기간에 데이터 범위를 올바르게 요청하는 방법이 있습니까? 나는'a [1981.25/1984.00]]와'window (a, start = c (1981,2), end = c (1983,1))'및'window (ts a), start = c (1981,2), end = c (1983,1)) '그러나 나는 이것을 작동시킬 수 없다. – moof

+0

@moof : 분기에 한 달 사용하십시오. 'a [ "1981-01/1983-09"]'는 1981 년 1 월 -1983 년 3 월을 반환 할 것입니다. –

+1

자, 시간대를 변경 한 후에 작동합니다. 해당 분기의 첫 번째 달을 사용해야하는 첫 번째 분기처럼 보입니다. 마지막 분기는 해당 분기의 모든 달을 사용할 수 있습니다. 많은 감사합니다. – moof

관련 문제