2016-06-27 1 views
0

R에서 사용하고자하는 netCDF4 파일이 너무 큽니다. 데이터 덩어리를 읽고 요약하는 루프를 작성하고 싶습니다.배열로 집계하기

내가 읽고 싶어하는 변수는 4 차원입니다. 'lat', 'lon', 'member'및 'time'. 시간은 월간 해상도이며 회원은 기후 모델에서 60 개의 앙상블을 운영합니다.

ncvar_get 명령을 사용하면 netCDF에서 12 개의 시간 조각을 추출하여 4 차원 배열로 남겨 둡니다.

num[1:144,1:69:1:60,1:12] 

어떻게하면 연간 데이터를 얻을 수 있을까요?

답변

0

길이가 12 인 네 번째 차원은 월 수이며이 차원에 대해 집계하고 차원 배열 c(144, 69, 60)의 배열을 반환한다고 가정합니다. 여기

myArray <- array(1, dim =c(144, 69, 60, 12)) 

이 방법 apply을 사용

재현 데이터 (모두 1과 동일한 사이즈의 배열) : 이것은 다음 차원 배열로 반환

mySumArray <- apply(myArray, c(1,2,3), sum) 

:

dim(mySumArray) 
[1] 144 69 60 

그리고 처음 세 요소는 다음과 같습니다.

mySumArray[1:3] 
[1] 12 12 12 

평균 또는 다른 기능을 원한다면 sum을 원하는 기능으로 바꾸십시오.

평균 합산 및 계산의 최적화 버전은 rowSumsrowMeans입니다.

mySumArray <- rowSums(myArray, dims=3) 

은 위와 같은 결과를 훨씬 빠르게 반환합니다.