为R中的每个级别使用逻辑运算符重复子集

时间:2013-06-25 21:09:41

标签: r subset apply

我的数据框看起来像:

                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

基本上,我想重复每个级别的/ demo uri使用的代码。我知道我可以手动完成,只需要替换“/ demo”,然后组合它,但我有130种不同类型的URI。我是R的初学者,宁愿不使用任何包。我相信我需要以某种方式使用tapply()。

谢谢!

1 个答案:

答案 0 :(得分: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),])
}