0

我有一个看起来像这样的数据框:

                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() 。

谢谢!

4

1 回答 1

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),])
}
于 2013-06-25T21:50:40.483 回答