2013-06-25 15 views
0

我有一個看起來像一個數據幀:重複子集使用邏輯運算符每個級別中的R

   uri month 
1 /product/product2 Jun 
2 /product/product3 Jun 
3 /product/product3 Jun 
4  /feeds/press Jun 
5 /product/product3 Jun 
6 /product/product3 Jun 

我希望創建一個看起來像

uri      Jan   Feb  Mar    etc. 
/product/product2   1938   5785  4842 
/feeds/press    523894  34829  398423 

這些數字都是另一個數據幀例子(不是真正的總計)

我能創造像這樣使用:

#Reorder Months in Calendar Year for /demo URI 
demo_month = as.matrix(
as.matrix(summary(uri_month[uri_month$uri == "/demo", "month" ])) 
[c(5,4,8,1,9,7,6,2,12,11,10,3),]) 

這樣demo_month看起來像

 [,1] 
Jan 12845 
Feb 11716 
Mar 11627 
Apr 11005 
May 12362 
Jun 12360 
Jul 12688 
Aug 11526 
Sep 11105 
Oct 2544 
Nov 17056 
Dec 14137 

從本質上講,我想重複我用於/演示URI每個級別的代碼。我知道我可以手動完成,只需替換「/ demo」,然後合併它,但我有130種不同類型的URI。我是R的初學者,並且寧願不使用任何軟件包。我相信我會需要使用tapply()。

謝謝!

+0

在我看來,你想重塑數據。雖然,你可能不喜歡使用任何軟件包,但使用reshape2軟件包很容易解決。 [Here](http://stackoverflow.com/questions/15668870/reshape-wide-format-to-multi-column-long-format/15669045#15669045)就是例子。 – Metrics

回答

0

我不確定我是否完全理解了您的問題,但我相信下面的代碼會重新排列矩陣中每一行的年份月份,然後將它們保存爲列到新矩陣中。我希望這有助於:

m<-matrix(0,nrow=12,ncol=nrow(uri_month)) 
for(i in 1:nrow(uri_month)){ 
    m[,i] = as.matrix(as.matrix(summary(uri_month[uri_month[i,], "month" ])) 
    [c(5,4,8,1,9,7,6,2,12,11,10,3),]) 
} 
+0

我決定以另一種方式處理我的問題(按月排序,而不是uri)。不過謝謝你,我需要用你的代碼來解決我遇到的另一個問題。 :) – camelarms