2012-12-19 2 views
5

xts (또는 동물원)이 apply.period를 수행 한 후 시간으로 사용하는 것을 파악하려고합니다. 다음 고려 : apply.weekly()로 전체 주 강제 적용

> myTs = xts(1:10, as.Date(1:10, origin = '2012-12-1')) 
> apply.weekly(myTs, colSums) 
      [,1] 
2012-12-02 1 
2012-12-09 35 
2012-12-11 19 

은 내가 '2012년 12월 2일'는 "2012년 12월 2일 종료 주 동안은 합이 1"생각합니다. 그래서 기본적으로 시간은 주말입니다.

그러나 문제는 그 "2012년 12월 11일"함께 - 나는 11이을 받았다 주 의 마지막 날이라고 말하고 무엇을하고있어 생각 , 그래서 시간으로 있음을주고 .

일요일에 데이터 세트에 포함되지 않았더라도 일요일에 강제 종료 할 수있는 방법이 있습니까?

답변

3

이 시도 : 나는 왜

는 예를 들어, 당신은 흐르는이 할 수있는 (어쩌면 디자인 선택이 고유 인덱스를 얻을) 모르는 nextsunnextfri 코드에서 파생 된

nextsun <- function(x) 7 * ceiling(as.numeric(x-0+4)/7) + as.Date(0-4) 
aggregate(myTs, nextsun, sum) 

zoo quick reference에서 5를 (금요일의 경우) 0으로 대체하여 (일요일의 경우).

3

전체 주입니다. 그것은 단지 마지막 관찰의 날짜를 보여주는 것입니다. ?endpoints (apply.weekly, 끝점의 본질적으로 얇은 래퍼)을 참조하십시오. 에서

apply.weekly 
function (x, FUN, ...) 
{ 
    ep <- endpoints(x, "weeks") 
    period.apply(x, ep, FUN, ...) 
} 
<environment: namespace:xts> 

? 엔드 포인트

엔드 포인트가 0이 벡터의 시작 부분에 추가로,에 의해 지정된 각 기간의 마지막 관찰에 해당하는 숫자 벡터를 반환하고,의 인덱스 x에서의 마지막 관찰 끝. 에 인수

유효한 값은 다음과 같습니다 : "우리"(마이크로 초), "마이크로", "MS"(밀리 초), "밀리 초", "초"(초), "초", "분" (분), "분", "시", "일", "주", "월", "분기"및 "연도".

두 번째 질문에 대한 대답은 아니오입니다. 그렇게 할 수있는 옵션이 없습니다. 그러나 당신은 항상 수동으로 마지막 날짜를 편집 할 수 있습니다. 어쨌든 모든 데이터를 표시하려면 아무런 해가 없습니다.

2

아니요 일요일에 강요 할 수 없습니다. period.apply의 결과의 인덱스가

ep <- endpoints(myTs,'weeks') 

myTs[ep] 
      [,1] 
2012-12-02 2 
2012-12-09 9 
2012-12-10 10 

에 의해 제공되기 때문에

그래서 당신은 마지막 날짜를 이동해야합니다. 불행히도 xts는이 옵션을 제공하지 않으므로 색인의 단일 값을 이동할 수 없습니다.

ts.weeks <- apply.weekly(myTs, colSums) 
ts.weeks[length(ts.weeks)] <- last(index(myTs)) + 7-last(floor(diff(ep)))