我无法找到这个简单问题的解决方案.我有一个这样的数据框:
df = data.table(X1 = 1:12, X2 = LETTERS[1:12])
Run Code Online (Sandbox Code Playgroud)
我想创建一个名为的新变量group,我希望将连续行分组为3.例如:行1-3,将是group0,行4-6将是group2,依此类推.
结果预期:
X1 X2 group
1: 1 A 0
2: 2 B 0
3: 3 C 0
4: 4 D 1
5: 5 E 1
6: 6 F 1
7: 7 G 2
8: 8 H 2
9: 9 I 2
10: 10 J 3
11: 11 K 3
12: 12 L 3
Run Code Online (Sandbox Code Playgroud)
Mod运算符%/%是一种简单的方法来执行以下操作:
df[, group := (1:.N - 1) %/% 3]
df
# X1 X2 group
# 1: 1 A 0
# 2: 2 B 0
# 3: 3 C 0
# 4: 4 D 1
# 5: 5 E 1
# 6: 6 F 1
# 7: 7 G 2
# 8: 8 H 2
# 9: 9 I 2
#10: 10 J 3
#11: 11 K 3
#12: 12 L 3
Run Code Online (Sandbox Code Playgroud)
你也可以用 rep
df[, group := rep(1:(.N / 3) - 1, each = 3)]
df
# X1 X2 group
# 1: 1 A 0
# 2: 2 B 0
# 3: 3 C 0
# 4: 4 D 1
# 5: 5 E 1
# 6: 6 F 1
# 7: 7 G 2
# 8: 8 H 2
# 9: 9 I 2
#10: 10 J 3
#11: 11 K 3
#12: 12 L 3
Run Code Online (Sandbox Code Playgroud)