2014-05-21 6 views
0

나는 folowing 구조로 큰 matirx 있습니다. 난 그냥 그것을 밖으로 새 매트릭스를 creat 싶어요. 하지만 R로 구현하는 방법을 모르겠다. 누군가 구현 해줄 수 있습니까?R의 행렬에서 새 행렬을 만드는 법?

내 매트릭스 :

 a b c  
[1,] "10" "m" "MIT1" 
[2,] "15" "m" "MIT1" 
[3,] "20" "s" "MIT2" 
[4,] "30" "m" "MIT2" 
[5,] "40" "p" "MIT4" 
[6,] "50" "m" "MIT4" 
[7,] "60" "m" "MIT4" 
[8,] "65" "m" "MIT4" 
[9,] "70" "m" "MIT4" 
> 

내 새로운 matirx해야 다음 규칙의 결과 열에서 모든 아이디 C 들어

B 좌표 대응이 m,이면 열에있는 해당 좌표를 모두으로 합친 다음 새 행렬에 넣습니다.

위의 행렬에 대한 예상 출력은 다음과 같습니다

> H 
    a  b c  
q "25" "m" "MIT1" 
w "30" "m" "MIT2" 
e "255" "m" "MIT4" 
+1

매트릭스 대신 data.frame을 사용해야합니다. – Roland

+0

by() 함수를 살펴보십시오 (아마도 @Roland가 제안한대로 data.frame으로 변환해야 할 수도 있습니다) – lucacerone

답변

1

쉽게 여기 data.frame로 변환 할 수 있습니다. M은 원래 매트릭스였습니다.

> library(plyr) 
> D <- data.frame(M, stringsAsFactors = FALSE) 
> ddply(D[D$b == 'm',], .(c, b), summarize, sum = sum(as.numeric(a))) 
    c b sum 
1 MIT1 m 25 
2 MIT2 m 30 
3 MIT4 m 245 
관련 문제