【发布时间】:2021-12-09 10:18:17
【问题描述】:
我对 R 和数据表比较陌生,我认为我所要求的应该不会太难。
我有一些数据:
test <- data.table(x=(0:5))
test2 <- data.table(x=(0:2))
test3 <- data.table(x=(0:4))
data <- rbind(test, test2, test3)
我最终想创建一个新变量作为我的分组变量,使用这个数据集,我最终会得到 3 个组。第一组是 0 到 5 的值,第二组是 0 到 1 的值,第三组是 0 到 4 的值。换句话说,每当我的原始列“x”中有一个 0 时,我想要开始一个新的小组。这些分组变量将是数字:1、2、3。
我试过了:
data <- data[, grouping_variable := sequence(.N), by=c("x")]
你会看到它很接近,但它并不完全正确。任何帮助表示赞赏!!!
【问题讨论】:
-
可能类似于
data[, g := cumsum(x==0L)] -
@chinsoon12,也许将其作为答案发布?
-
@chinsoon12,就是这个!!哇,太疯狂了,我花了 4 个小时试图解决这个问题,我一直在寻找这么简单的代码行。非常感谢!!
标签: r data.table