2012-07-20 117 views
1

是否有像表格一樣的功能將結果輸出爲不規則數組?Tablulate與輸出爲衣衫襤褸的書籤

我有一個數據框,我想列表不同的項目在一個衣衫襤褸的數組中出現。我知道我可以使用table來輸出數組中的數據。但數據稀少。 xtab函數可以輸出爲稀疏矩陣,但它僅限於兩個維度。

我想一個函數來採取這樣的數據幀:

 
Purchases WeeksSinceFirstPurcahse 
1   10.1 
1   4.2 
1   4.2 
2   2.4 
3   1 
2   2.4 

和輸出計數像這樣:

 
Purchases DaysSinceFirstPurcahse Count 
1   10.1     1 
1   4.2      2 
2   2.5      2 
3   1      1 
+0

這就是你試圖用功能'表()'和不喜歡? 'as.data.frame(table(x $ Purchases,x $ WeeksSinceFirstPurcahse))' – Chase 2012-07-20 20:11:59

回答

2

可以使用plyr包和specialy的計數功能。 使用您的數據,我們可以做這樣的事情:

require(plyr) 
toydat 
    Purchases WeeksSinceFirstPurcahse 
1   1     10.1 
2   1      4.2 
3   1      4.2 
4   2      2.4 
5   3      1.0 
6   2      2.4 

str(toydat) 
'data.frame': 6 obs. of 2 variables: 
$ Purchases    : int 1 1 1 2 3 2 
$ WeeksSinceFirstPurcahse: num 10.1 4.2 4.2 2.4 1 2.4 

ddply(toydat, .(Purchases), function(x) count(x, "WeeksSinceFirstPurcahse")) 
    Purchases WeeksSinceFirstPurcahse freq 
1   1      4.2 2 
2   1     10.1 1 
3   2      2.4 2 
4   3      1.0 1 

編輯補充計數功能例:

count(toydat,.(Purchases,WeeksSinceFirstPurchase)) 
    Purchases WeeksSinceFirstPurchase freq 
1   1      4.2 2 
2   1     10.1 1 
3   2      2.4 2 
4   3      1.0 1 
+1

我實際上發現你可以用count函數來實現,它比ddply快。 COUNT(toydat,(採購,WeeksSinceFirstPurchase))。 – aaronjg 2012-07-20 20:05:45

+0

你說得對。我從來沒有像這樣使用這個函數謝謝(+1) – dickoa 2012-07-20 20:14:24