2017-04-05 1 views
1

NA가있는 행렬이 있고 각 행의 3 열마다 평균을 찾고 싶습니다.R에있는 NA가있는 모든 3 열을 평균하는 방법

set.seed(100) 
a <- matrix(sample(c(NA, 1:4), 90, replace = TRUE), 10) 

내가 NA 포함 colums의 평균을 찾을 수 없습니다

t(apply(a, 1, tapply, gl(3, 3), mean)) 

코드를 사용하는 경우. 코드를 어떻게 수정할 수 있는지 궁금합니다. 고마워.

+2

'의 t (적용 (A, 1, tapply, GL (3, 3), 의미, na.rm = TRUE))' –

+0

내가 바보, 하하, 감사입니다. –

답변

1

3 차원 배열로 변환 한 다음 rowMeans을 3 번째 마진으로 반복하여 얻을 수 있습니다.

res <- apply(array(a, c(nrow(a), 3, 3)), 3, rowMeans, na.rm = TRUE) 
all.equal(res, t(apply(a, 1, tapply, gl(3, 3), 
     mean, na.rm = TRUE)), check.attributes = FALSE) 
#[1] TRUE 
+0

도와 주셔서 감사합니다. 'c (nrow (a), 3, 3) '는 무엇을 의미합니까? 감사. –

+0

@YangYang 3D 배열에는 3 차원이 있습니다. 첫 번째 행, 두 번째 열 및 세 번째 차원입니다. 여기서 행의 수는 원래 행렬의 수와 같습니다. 그래서 나는 그것을 'nrow (a)'로 지정했고, 다음은 3입니다. 각 배열 슬라이스에 3 개의 열만 있기를 바랍니다. – akrun

+1

도움을 주셔서 대단히 감사합니다! –

관련 문제