2013-03-14 3 views
3

데이터 프레임의 데이터를 다른 방식으로 볼 필요가 있습니다. 여기서 I가 이러한 방식으로 변형 될 필요R의 데이터 변환

Person Item BuyOrSell 
1  a B 
1  b S 
1  a S 
2  d B 
3  a S 
3  e S 

다음과 같이

내가 데이터 프레임이 .. 문제이다. 해당 개인이 개별 항목에 대해 수행 한 모든 거래의 합계를 표시합니다.
Person a b d e 
1  2 1 0 0 
2  0 0 1 0 
3  1 0 0 1 

제가

R

I 가지고있는 새로운 요구는 다음과 같은 데이터를 참조하는 상기

table(Person,Item)를 사용하여 상기를 달성 할 수 있었다. 트랜잭션 타입 (B 또는 S)

Person aB aS bB bS dB dS eB eS 
1   1 1 0 1 0 0 0  0 
2   0 0 0 0 1 0 0  0 
3   1 0 0 0 0 0 0  1 

그래서 새로운 컬럼을 생성하고, 항목 BuyOrSell 양의 값을 추가로 세분화 개별 항목에 사람에 의해 수행 된 모든 트랜잭션의 합을 나타낸다.

df$newcol<-paste(Item,"-",BuyOrSell,sep="") 
table(Person,newcol) 

위의 결과를 얻을 수 있었다.

R에서 이러한 유형의 변환을 수행하는 더 좋은 방법이 있습니까?

+0

'paste' 메소드가 좋습니다. 'as.data.frame (table (Person, Item, BuyOrSell)) '과 같은 정보를 얻을 수는 있지만 (같은 형식이 아닐지라도)이 방법이 더 좋을지는 모르겠다. – Ista

답변

1

아마도 (paste을 통해 새 열을 만드는) 가장 쉬운 방법 일 것입니다. 다음과 같이 할 수도 있습니다 :

require(reshape2) 
dcast(Person~Item+BuyOrSell,data=df,fun.aggregate=length,drop=FALSE) 
+0

감사합니다. 추가 요구 사항을 추가했습니다. 필요하다고 제안하십시오. – user2171177

+0

관습에 따라 사용자는 하나의 질문에 대한 후속 질문을하지 않습니다. 대신에 별도의 질문으로 질문하십시오 –

+0

머리를 주셔서 감사합니다 ... 나는 다른 질문을 게시 할 것입니다. – user2171177