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]
的格式创建新的_表,所以我编写以下命令:tabletable1+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