我有一个包含 21638 个唯一 * 行的表:
vocabulary <- read.table("http://socserv.socsci.mcmaster.ca/jfox/Books/Applied-Regression-2E/datasets/Vocabulary.txt", header=T)
该表有五列,第一列包含受访者的 ID 号。我想检查是否有任何受访者出现两次,或者所有受访者是否都是唯一的。
要计算我可以使用的唯一 ID
length(unique(vocabulary$id))
并检查是否有任何重复我可能会做
length(unique(vocabulary$id)) == nrow(vocabulary)
TRUE
如果没有重复项(没有重复项),则返回。
我的问题:
有没有直接的方法来返回重复值或行号?
一些进一步的解释:
使用函数存在解释问题duplicated()
,因为它只返回严格意义上的重复项,不包括“原件”。例如,sum(duplicated(vocabulary$id))
或者dim(vocabulary[duplicated(vocabulary$id),])[1]
可能返回“5”作为重复行数。问题是,如果您只知道重复的数量,您将不知道它们重复了多少行。“5”是指有五行,每行一个重复,还是一行有五个重复?而且由于您没有重复项的 ID 或行号,因此您将无法找到“原件”。
*我知道此调查中没有重复的 ID,但这是一个很好的例子,因为使用此问题其他地方给出的任何答案,例如duplicated(vocabulary$id)
或table(vocabulary$id)
将在屏幕上输出一个干草堆,您将无法在其中找到任何可能的稀有重复针。