我想根据列对 data.table 进行分组range值,我该如何使用 dplyr 库来做到这一点?
例如我的数据表如下:
library(data.table)
library(dplyr)
DT <- data.table(A=1:100, B=runif(100), Amount=runif(100, 0, 100))
现在我想以B列0.05的间隔将DT分为20组,并统计每组中有多少行。例如,任何 B 列值在 [0, 0.05) 范围内的行将形成一个组; B 列值在 [0.05, 0.1) 范围内的任何行将形成另一个组,依此类推。有没有一种有效的方法来完成这个小组功能?
非常感谢。
----------------------------- 关于 akrun 的回答的更多问题。
感谢阿克伦的回答。我有一个关于“剪切”功能的新问题。如果我的 DT 如下所示:
DT <- data.table(A=1:10, B=c(0.01, 0.04, 0.06, 0.09, 0.1, 0.13, 0.14, 0.15, 0.17, 0.71))
使用以下代码:
DT %>%
group_by(gr=cut(B, breaks= seq(0, 1, by = 0.05), right=F) ) %>%
summarise(n= n()) %>%
arrange(as.numeric(gr))
我期望看到这样的结果:
gr n
1 [0,0.05) 2
2 [0.05,0.1) 2
3 [0.1,0.15) 3
4 [0.15,0.2) 2
5 [0.7,0.75) 1
但我得到的结果是这样的:
gr n
1 [0,0.05) 2
2 [0.05,0.1) 2
3 [0.1,0.15) 4
4 [0.15,0.2) 1
5 [0.7,0.75) 1
看起来值 0.15 没有正确分配。对此有什么想法吗?