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

对R中的每个级别使用逻辑运算符重复子集,r,subset,apply,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

我有一个数据框,看起来像:

                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
     [,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
这些数字都是示例(不是实际总数)

我可以通过以下方式创建类似的内容:

#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),])
这样的话,这个月看起来

uri                       Jan          Feb        Mar             etc.
/product/product2         1938         5785       4842
/feeds/press              523894       34829      398423
     [,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()


谢谢

我不确定是否完全理解您的问题,但我相信下面的代码将为矩阵中的每一行重新排序一年中的月份,然后将它们作为列保存到新矩阵中。我希望这有助于:

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),])
}

在我看来,麻省理工学院可能想重塑数据。尽管您可能不喜欢使用任何包,但使用Reforme2包很容易解决问题。我决定用另一种方式处理我的问题(按月份排序,而不是uri)。不过,谢谢你,我需要将你的代码用于我遇到的另一个问题。:)