r - 组 id 内的 data.table

标签 r data.table

这个问题在这里已经有了答案:





data.table "key indices" or "group counter"

(2 个回答)


6年前关闭。




我有一个带有 n 个分组变量的 data.table(在本例中为 2)。我想为每个组添加一个标识符列,如下面所需的输出所示。我试过 := :.N` 我明白为什么这不起作用,但不知道如何实现:

library(data.table)
dat <- data.table::data.table(
    w = 1:16,
    x = LETTERS[1:2],
    y = 1:4
)[, w := NULL][order(x, y)]


##     x y
##  1: A 1
##  2: A 1
##  3: A 1
##  4: A 1
##  5: A 3
##  6: A 3
##  7: A 3
##  8: A 3
##  9: B 2
## 10: B 2
## 11: B 2
## 12: B 2
## 13: B 4
## 14: B 4
## 15: B 4
## 16: B 4


dat[, z := 1:.N, by = list(x, y)]
dat

期望输出
##     x y z
##  1: A 1 1
##  2: A 1 1
##  3: A 1 1
##  4: A 1 1
##  5: A 3 2
##  6: A 3 2
##  7: A 3 2
##  8: A 3 2
##  9: B 2 3
## 10: B 2 3
## 11: B 2 3
## 12: B 2 3
## 13: B 4 4
## 14: B 4 4
## 15: B 4 4
## 16: B 4 4

最佳答案

dat[, z:=.GRP,by=list(x,y)]
dat
#     x y z
#  1: A 1 1
#  2: A 1 1
#  3: A 1 1
#  4: A 1 1
#  5: A 3 2
#  6: A 3 2
#  7: A 3 2
#  8: A 3 2
#  9: B 2 3
# 10: B 2 3
# ...

关于r - 组 id 内的 data.table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32443864/

相关文章:

r - 如果组具有特定值(查看前一个值),则保留组的行

r - 在 data.table 包中使用 .BY 和 .EACHI

r - 使用函数与 data.table 进行叉积/连接

r - data.table bug,导致 R 中出现段错误

r - 数据表中行之间的条件数学

r - Uncaught ReferenceError : Shiny is not defined

当我有文件名的一部分时从 R 中读取文件

windows - rhdfs没有建立连接

r - 根据一个表的列名和另一个表的列值合并两个大data.tables而不熔化

r - ggstatsplot::gg Betweenstats:在 R 中比较时增加 p 值的字体大小