在R中的数据表中对连续的行进行分组

YOL*_*OLO 1 r data.table

我无法找到这个简单问题的解决方案.我有一个这样的数据框:

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)

Gre*_*gor 6

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)


mar*_*kus 5

你也可以用 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)