2013-03-14 80 views
3

我需要以不同的方式查看數據幀中的數據。這裏的問題..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

了新的要求我是看到的數據如下使用

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(表格(Person,Item,BuyOrSell))'獲得相同的信息(儘管格式不同),但我不知道這種方法更好。 – Ista 2013-03-14 19:09:39

回答

1

你的方式(通過paste創建一個新列)可能是最簡單的。你也可以這樣做:

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

謝謝你們。我增加了一個額外的要求,請建議有需要的人。 – user2171177 2013-03-14 20:33:34

+0

按照慣例,用戶不會將後續問題提交給單個問題。你反而要求它作爲一個單獨的問題 – 2013-03-14 20:43:25

+0

好的謝謝你的頭......我會發表一個不同的問題。 – user2171177 2013-03-14 20:46:55