R:data.table 中 setkey() 后重复更改的输出
R: Output of duplicated changes after setkey() in data.table
在合并两个数据集的过程中,我使用函数 duplicated
检查重复条目的数据。无论我在 setkey()
之前还是之后 运行 duplicated
,我都会得到两个不同的输出。这是 data.table
中的自然行为吗?在我(拙劣的)看来,重复的数量应该通过设置键来改变,在我的理解中,这只是 data.table
的重新排序和索引。我错过了一些关键点吗?
非常感谢!
这是一个例子data.table
:
> DT
id x1 x2
1: A 0 1
2: A 1 1
3: B 0 1
4: B 1 0
5: C 1 1
6: C 0 0
在这个未加密的数据集上运行 duplicated
我得到没有重复条目的结果,这似乎是有序的。
duplicated(DT)
[1] FALSE FALSE FALSE FALSE FALSE FALSE
然后在使用 setkey()
设置密钥后,我得到以下输出,
setkey(DT,id)
duplicated(DT)
[1] FALSE TRUE FALSE TRUE FALSE TRUE
其中函数指示 3 个重复项。我只是不明白...
这是我用来生成 data.table
的代码
set.seed(123)
id <- rep(LETTERS[1:3],each=2)
x1 <- sample(c(0,1),6,T)
x2 <- sample(c(0,1),6,T)
DT <- data.table(id,x1,x2)
要duplicated
使用每一列的元素,设置一个或多个键列后,在逐行重复检查中,使用
duplicated(DT,by=NULL)
> [1] FALSE FALSE FALSE FALSE FALSE FALSE
正如文档所述,duplicated
对于 data.table
的行为与基础版本不同,或者当它处理 data.frames
.
时
当您使用 setkey()
设置键时,函数 duplicated
仅检查键列中的行是否重复。在这个问题中,只有 id
被设置为键,所以只有 id
的行(在本例中是列中的元素)被检查是否重复。
如果您在 duplicated
中指定 by
参数,该函数将检查具有 by
中指定的每一列的元素的行是否在 table.
通过设置 by=NULL
考虑所有列,并且该函数检查逐行重复项,其中行向量包含来自所有 columns.This 的元素模仿 duplicated
时的行为处理 data.frames
.
在合并两个数据集的过程中,我使用函数 duplicated
检查重复条目的数据。无论我在 setkey()
之前还是之后 运行 duplicated
,我都会得到两个不同的输出。这是 data.table
中的自然行为吗?在我(拙劣的)看来,重复的数量应该通过设置键来改变,在我的理解中,这只是 data.table
的重新排序和索引。我错过了一些关键点吗?
非常感谢!
这是一个例子data.table
:
> DT
id x1 x2
1: A 0 1
2: A 1 1
3: B 0 1
4: B 1 0
5: C 1 1
6: C 0 0
在这个未加密的数据集上运行 duplicated
我得到没有重复条目的结果,这似乎是有序的。
duplicated(DT)
[1] FALSE FALSE FALSE FALSE FALSE FALSE
然后在使用 setkey()
设置密钥后,我得到以下输出,
setkey(DT,id)
duplicated(DT)
[1] FALSE TRUE FALSE TRUE FALSE TRUE
其中函数指示 3 个重复项。我只是不明白...
这是我用来生成 data.table
set.seed(123)
id <- rep(LETTERS[1:3],each=2)
x1 <- sample(c(0,1),6,T)
x2 <- sample(c(0,1),6,T)
DT <- data.table(id,x1,x2)
要duplicated
使用每一列的元素,设置一个或多个键列后,在逐行重复检查中,使用
duplicated(DT,by=NULL)
> [1] FALSE FALSE FALSE FALSE FALSE FALSE
正如文档所述,duplicated
对于 data.table
的行为与基础版本不同,或者当它处理 data.frames
.
当您使用 setkey()
设置键时,函数 duplicated
仅检查键列中的行是否重复。在这个问题中,只有 id
被设置为键,所以只有 id
的行(在本例中是列中的元素)被检查是否重复。
如果您在 duplicated
中指定 by
参数,该函数将检查具有 by
中指定的每一列的元素的行是否在 table.
通过设置 by=NULL
考虑所有列,并且该函数检查逐行重复项,其中行向量包含来自所有 columns.This 的元素模仿 duplicated
时的行为处理 data.frames
.