R 如何通过分组数据来创建透视表

R 如何通过分组数据来创建透视表,r,data.table,R,Data.table,以下是我的数据: ID Day advance nb_event ID1 1 NA 899 ID1 1 NA 899 ID1 1 NA 899 ID1 2 0.14

以下是我的数据:

ID         Day          advance           nb_event
ID1         1              NA                899
ID1         1              NA                899
ID1         1              NA                899
ID1         2             0.14               899
ID1         2              NA                899
ID1         3             0.22               899
ID1         3              NA                899
ID1         3              NA                899
ID1         2              NA                899
ID1         4             -0.96              899
ID1         4              NA                899
...
ID1         30             0.74              899
ID1         30              NA               899
ID1         30              NA               899
ID1         30              NA               899
ID2         1              NA                127
ID2         1              NA                127
ID2         2             1.54               127
...
ID2         16            0.74               127
ID3         1              NA                631
ID3         2             -0.48              631
...
ID3         35            0.25               631
...
ID80459
变量的解释:

高级
:每日高级

nb\u事件:
每个
ID
的事件编号

我想通过以下命令对
advance
nb\u事件进行分组:

cut.advance <- cut(advance, breaks = c(-Inf, -0.5, -0.25, -0.1, 0, 0.02, 0.05, 0.15, 0.3, 0.5, 1, Inf), right = FALSE)

cut.nb <- cut(nb_event, breaks = c(1, 500, 1000, 5000, 15000, 20000, 50000, Inf), right = FALSE)

rws非常感谢!但R表示“警告消息:在cbind(match(cut.mm,rws),match(cut.nb,cols)):结果的行数不是向量长度(arg2)的倍数”。结果是不正确的(在我的数据中,
length(match(cut.mm,rws))=2181
,但是
length(match(cut.nb,cols))=284
,它们不一样,所以可能这就是它不起作用的方式?哦,这不是问题。我认为我们应该以
new_table[a,b]
的格式创建新的_表,所以我编写以下命令:
table
table
1+new_table[table],表[2]]
或者可能是
1+新表[table]
没有
循环?没有。正如您所见
                                    cut.nb
cut.advance |1-500  501-1000  1001-5000  5k-15k   15k-20k  20k-50k  more 50k
            |
More -50%   |    
-50 to -25% |
-25 to -10% |
-10 to 0%   |
Unchange    |
0 to 2%     |
2% to 5%    |   
5% to 15%   |
15% to 30%  |
30% to 50%  |
50% to 100% |
More 100%   |
rws <- levels(cut.advance)
cols <- levels(cut.nb)
new_table <- matrix(0,length(rws),length(cols))
new_table[cbind(match(cut.advance, rws), match(cut.nb, cols))] <- 1
dimnames(new_table) <- list(rws, cols)
new_table