我有一个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)
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)
惯用的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)