2013-11-20 4 views
1

R에 3D 배열이 있는데, 치수가 500 * 3 * 5라고하면 데이터라고 부릅니다. 그래서 매트릭스의 5 조각, 각각 500 행 3 열 있습니다. 이제 5 개의 슬라이스를 세로로 쌓는 새로운 매트릭스를 만들고 싶습니다. 그래서, 출력은 500 * 5 행 5 열을 가지며, 그것은 다음과 같다 : r에 새 행렬에 열 그룹을 어떻게 스택합니까?

[dim1] [ dim3 ]  [1]  [2]  [3]  

1   1   data  data  data 
1   2   data  data  data 
1   3   data  data  data 
1   4   data  data  data 
1   5   data  data  data 
2 
2 
2 
.. 
500   1   data  data  data 
500   2   data  data  data 
500   3   data  data  data 
500   4   data  data  data 
500   5   data  data  data 

그래서 각각 500 행의 경우, 제 2, 컬럼 1은 원래의 행 인덱스를 반복하도록 원의 배열의 3 차원을, 반복 column2는 이전 z 차원 인덱스를 반복하고 3-5 열은 데이터의 3 열 (숫자 및 누락 값)입니다. 방금 숫자 5를 사용했습니다. 데이터에서 숫자가 훨씬 더 크기 때문에 더 일반적으로이 작업을 수행 할 수 있어야합니다. 감사!!!

답변

1

하자 당신의 차원 배열이 a을 수행 할 수 있습니다 : 당신이 왼쪽에 희미한 인덱스를 추가하려면

n <- dim(a) 
b <- aperm(a, c(3,1,2)) 
dim(b) <- c(n[3] * n[1], n[2]) 

, 당신은 할 수 있습니다 :

b <- cbind(rev(expand.grid(dim3 = 1:n[3], dim1 = 1:n[1])), b) 
+0

너무 감사합니다! – user511792

관련 문제