【发布时间】:2021-12-01 07:37:04
【问题描述】:
library(data.table)
DT <- data.table(var = 1:100)
我想创建第二个变量group,它将var 中的值按n 连续整数分组。因此,如果 n 等于 1,它将返回与 var 相同的列。如果n=2,它会返回我:
var group
1: 1 1
2: 2 1
3: 3 2
4: 4 2
5: 5 3
6: 6 3
如果n=3,它会返回我:
var group
1: 1 1
2: 2 1
3: 3 1
4: 4 2
5: 5 2
6: 6 2
等等。我想尽可能灵活地做到这一点。
注意可能有重复的值:
var group
1: 1 1
2: 1 1
3: 2 1
4: 3 2
5: 3 2
6: 4 2
这里group对应n=2.谢谢!
【问题讨论】:
-
DT[, group := ((.I - 1) %/% n) + 1]将根据您对大于 0 的任何n显示的内容起作用,但如果需要根据var是否连续而改变行为,您需要提供一个示例并解释当var不连续时会发生什么。 -
@GregorThomas 感谢您的评论。我应该更具体地道歉。
var变量将始终为严格正数。但是,我应该注意到var的值可能重复。但是您的解决方案仍然很有效。非常感谢。 -
我的意思是,
var的值似乎根本不重要。而且我的解决方案根本不使用它们。 -
抱歉我的评论,@akrun,我不希望恶意和误解了一些代码。在我们讨论它时,我发现了突出我们方法差异的极端案例。
标签: r data.table