2017-11-21 10 views
0

rollapply을 구현하고 상위 6 개 행을 제외하고 창 길이 2의 평균을 계산하려고했습니다.상위 6 개 행을 제외하고 선택된 행 수에 대한 rollapply

Volume <- c(10406513,14252364,7235783,7235783,5593794,5825159,3887574,2959390, 5060051,5984374,5395609,5750741,6065117,4498997,6712159) 

를 다음과 같이 내 데이터 내가 2. 다음과 같이 출력이 있어야 할 창 길이 7 값에서 평균을 계산할 수 있습니다 :

Volume    Average 
10,406,513   
14,252,364   
7,235,783    
7,235,783    
5,593,794    
5,825,159    
3,887,574    
2,959,390    
5,060,051    
5,984,374    
5,395,609   3,423,482 
5,750,741   4,009,721 
6,065,117   5,522,213 
4,498,997   5,689,992 
6,712,159   5,573,175 

나는 다음 코드를 시도하지만

를 작동하지 않습니다
window_length <- 2 
mean <- function(Volume){mean(Volume)} 
rolling_mean <- function(z, width){rollapply(Volume,lag = 6, width=width,FUN = mean, by.column = FALSE, align = "right")} 
roll_mean <- rolling_mean(Volume,window_length) 
나는 다음과 같은 오류가 무엇입니까

:

Error in FUN(data[posns], ...) : unused argument (lag = 6)

,691,363을210

이것에 대한 도움이 필요하십니까?

+0

처음 6 개 값으로 아무 것도 수행하고 싶지 않으십니까? – amrrs

+0

예. 계산은 7 번째 값부터 시작해야합니다. –

+0

왜 이걸 사용해 보지 않으시겠습니까? 'rollmean (Volume [7 : length (Volume)], 2)' – amrrs

답변

1

오류 메시지와 관련하여 rollapply 함수는 lag 인수를 사용하지 않으며 정의한 mean 함수도 오류 메시지가 사용할 수없는 인수를보고하지 않습니다.

질문에서와 같이 mean 기능을 자신의 mean 기능으로 덮어 쓰면 문제가 생깁니다. 또한 mean 함수는 mean 자체가 수행하지 않으므로 정의 할 유효한 이유가 없습니다. 해당 정의를 제거하십시오.

질문 자체에 대한 설명과 표시된 샘플 출력 간에는 약간의 불일치가있는 것으로 보입니다. 아래에서 샘플 출력은 원하는 것으로 가정합니다.

다음은 두 가지 대안입니다. 샘플 출력에서 ​​

1)은 당신이 폭 (11)의 창을 가지고 그 창에서 벡터의 입력과 같은 길이를 반환하는 7, 8 값의 평균을 할 것으로 보인다. 이것은 그 결과를 준다.

rollapplyr(Volume, 11, function(x) mean(x[7:8]), fill = NA) 
## [1]  NA  NA  NA  NA  NA  NA  NA  NA  NA 
## [10]  NA 3423482 4009721 5522213 5689992 5573175 

2)을 수행하는 또 다른 방법은 NA와 부피 제 6 개 값을 대체 한 후 세 번째와 네 번째 이전 값들의 평균을 취한다. width =는 여기서 사용하는 오프셋의 벡터를 포함하는 하나의 요소 목록을 취할 수 있습니다.

rollapplyr(replace(Volume, 1:6, NA), list(-(3:4)), mean, fill = NA) 
## [1]  NA  NA  NA  NA  NA  NA  NA  NA  NA 
## [10]  NA 3423482 4009721 5522213 5689992 5573175 
+0

위의 질문에 대한 확장 - 볼륨 변수에 중간에 NAs가 있으면 어떨까요? 동일한 조건으로 평균을 계산하는 방법? –