2013-05-31 4 views
1

나는 각 id가 반복 될 수있는 데이터 프레임을 가지고 있으며, 각 행은 거래 당 비용과 크기가 나열된 트랜잭션이다. 각 행의 구매자 이름, 행 이름은 비용, 값은 각 비용이 발생한 각 이름의 값이되는 데이터 프레임을 만들고 싶습니다. 나는 그것을 테이블로 만들 수 있지만, 그 테이블을 데이터 프레임으로 정확하게 만드는 데 어려움을 겪고있다. 나는 다른 프로그램의 붕괴와 함께이 일을 해왔지만 r에서 제대로 이해하지 못하는 것 같습니다. 아래 코드 :r에 그룹 수의 열을 어떻게 추가합니까?

test.base <- data.frame(
       names=c("A", "B", "C", "C", "B", "C"), 
       size =c(1, 2, 3, 4, 5, 6)) 

test.match<- data.frame(
       names=c("A", "B", "C"), 
       cost =c(7, 8, 9)) 

test.merge<- merge(test.base, test.match) 

#How do I make a new vriable in test-match that is the number of times 
#the cost shows up in each variable to be three new columns ("7", "8", "9")? 
    table(test.merge$names, test.merge$cost) 

아니면 붕괴가 필요합니까?

편집 : 나는이 다음과 같은 출력을하고자하지만, data.frame로 편집을 바탕으로

7 8 9 
    A 1 0 0 
    B 0 2 0 
    C 0 0 3 

답변

4

는, 아마도 당신은 as.data.frame.matrix 찾고 :

> as.data.frame.matrix(table(test.merge$names, test.merge$cost)) 
    7 8 9 
A 1 0 0 
B 0 2 0 
C 0 0 3 

첫 번째 "열"은 "rownames"이며 실제 열은 아닙니다.


다른 옵션 unclass 및 중 data.frame 또는 as.data.frame를 사용하여 포함한다. 전자는 필요에 따라 이름 앞에 "X"를 붙이고 공백을 점으로 변환하여 구문 적으로 유효한 이름을 만듭니다.

> data.frame(unclass(table(test.merge$names, test.merge$cost))) 
    X7 X8 X9 
A 1 0 0 
B 0 2 0 
C 0 0 3 
> as.data.frame(unclass(table(test.merge$names, test.merge$cost))) 
    7 8 9 
A 1 0 0 
B 0 2 0 
C 0 0 3 
+0

나는 다양한 as.XXX로 주위를 허비했지만 as.data.frame.matrix를 인식하지 못했다. +1 –

+0

끝 부분에 .matrix를 넣을지 몰랐습니다. 내가 4 시간 전에 이것을 물어 봤으면 좋겠다 !! 고마워! – mCorey

+0

@TylerRinker,이 문제에 대해서도'unclass'가 작동합니다. – A5C1D2H2I1M1N2O1R2T1

관련 문제