按组获取唯一值的行

beg*_*neR 2 r data.table

我有一个data.table并且想要选择data.table的那些行,其中变量x的某些值相对于另一个变量y是唯一的

有可能获得x的唯一值,在单独的数据集中按y分组,如下所示

dt[,unique(x),by=y]
Run Code Online (Sandbox Code Playgroud)

但我想在原始数据集中选择行,在这种情况下.我不想要一个新的data.table,因为我还需要其他变量.

那么,我必须添加到我的代码中以获取dt上述为真的行?

dt <- data.table(y=rep(letters[1:2],each=3),x=c(1,2,2,3,2,1),z=1:6) 

   y x z
1: a 1 1
2: a 2 2
3: a 2 3
4: b 3 4
5: b 2 5
6: b 1 6
Run Code Online (Sandbox Code Playgroud)

我想要的是:

   y x z
1: a 1 1
2: a 2 2
3: b 3 4
4: b 2 5
5: b 1 6
Run Code Online (Sandbox Code Playgroud)

A5C*_*2T1 6

data.table如何使用有点不同duplicated.以下是我之前在这里看过的方法:

dt <- data.table(y=rep(letters[1:2],each=3),x=c(1,2,2,3,2,1),z=1:6) 
setkey(dt, "y", "x")
key(dt)
# [1] "y" "x"
!duplicated(dt)
# [1]  TRUE  TRUE FALSE  TRUE  TRUE  TRUE
dt[!duplicated(dt)]
#    y x z
# 1: a 1 1
# 2: a 2 2
# 3: b 1 6
# 4: b 2 5
# 5: b 3 4
Run Code Online (Sandbox Code Playgroud)


Aru*_*run 5

惯用的data.table方式是:

require(data.table)
unique(dt, by = c("y", "x"))
#    y x z
# 1: a 1 1
# 2: a 2 2
# 3: b 3 4
# 4: b 2 5
# 5: b 1 6
Run Code Online (Sandbox Code Playgroud)