我正在尝试隔离数据框中具有共同值的条目:请参阅下文以重建我的 df 的一部分:
Stand<-c("MY","MY","MY","MY","MY")
Plot<-c(12,12,12,12,12)
StumpNumber<-c(1,2,3,3,7)
TreeNumber<-c(1,2,3,4,8)
sample<-data.frame(Stand,Plot,StumpNumber,TreeNumber)
sample
并获得一个输出,告诉我哪些条目具有共同值。换句话说,快速隔离对于给定的 Stand、Plot、StumpNumber 组合存在多个 TreeNumber(或多于一行)的情况。在示例代码中,StumpNumber 3 具有 TreeNumber 3 和 TreeNumber 4。
我对重复()的理解是,它可以找到单个列中出现重复值的实例 - 我可以做什么来查找出现常见列组合的情况?
谢谢。
最佳答案
?duplicated
的说明表明它适用于 data.frames 行,详细信息部分的第四段表示:
The data frame method works by pasting together a character
representation of the rows separated by ‘\r’, so may be imperfect
if the data frame has characters with embedded carriage returns or
columns which do not reliably map to characters.
您是如何了解到它仅适用于单列的?
假设 TreeNumber
在 Stand
、Plot
和 StumpNumber
中是唯一的,您只需将其从调用重复
。
> duplicated(sample[,1:3])
[1] FALSE FALSE FALSE TRUE FALSE
> duplicated(sample[,1:3], fromLast=TRUE)
[1] FALSE FALSE TRUE FALSE FALSE
更新 - 如果您想要所有重复的行,您可以执行以下操作:
> allDups <- duplicated(sample[,1:3],fromLast=TRUE) | duplicated(sample[,1:3])
> sample[allDups,]
Stand Plot StumpNumber TreeNumber
3 MY 12 3 3
4 MY 12 3 4
关于R:在多个列中查找模式 - 可能是重复的()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4140833/