如何识别R中的“相似”行?

如何识别R中的“相似”行?,r,rows,identify,R,Rows,Identify,大家好,社区的所有成员, 我试图找出如何比较数据库中的元素,并通过一个新的二进制变量来识别它们。 我的数据库是这样的: id=rep((1:2),5) date<-seq(from=as.Date("2013-01-1"),to=as.Date("2013-01-05"),by=1) trap<-c(1,1,3,1,4,2,3,4,1,4) DB<-data.frame(id,date,trap) DB<-DB[order(DB$date),] DB$id[2]<-

大家好,社区的所有成员, 我试图找出如何比较数据库中的元素,并通过一个新的二进制变量来识别它们。 我的数据库是这样的:

id=rep((1:2),5)
date<-seq(from=as.Date("2013-01-1"),to=as.Date("2013-01-05"),by=1)
trap<-c(1,1,3,1,4,2,3,4,1,4)
DB<-data.frame(id,date,trap)
DB<-DB[order(DB$date),]
DB$id[2]<-1
DB$trap[2]<-1
result<-c("N","N","N","N","N","N","Y","Y","Y","Y")
DB<-cbind(DB,result)
我想识别id不同的所有元素,但是日期和陷阱值是相同的,就像列result中的report一样

我尝试了一些代码,这些代码基本上是从另一个类似的问题中得到的,使用ave函数,但没有成功。
一如既往,任何提示都将不胜感激

您可以在数据帧上进行双循环:

(duplicated(DB[,-1]) | duplicated(DB[,-1],fromLast=TRUE)) & 
         !(duplicated(DB) | duplicated(DB,fromLast=TRUE))
#[1] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE
apply(DB, 1, function(r){
  if(any(apply(DB, 1, function(x)(x[1]!= r[1] & all(x[c(2,3)]==r[c(2,3)])))))
    "Y"
  else
    "N"
})        
给出:

  1   6   2   7   3   8   4   9   5  10 
"N" "N" "N" "N" "N" "N" "Y" "Y" "Y" "Y" 

您可以在数据帧上进行双循环:

apply(DB, 1, function(r){
  if(any(apply(DB, 1, function(x)(x[1]!= r[1] & all(x[c(2,3)]==r[c(2,3)])))))
    "Y"
  else
    "N"
})        
给出:

  1   6   2   7   3   8   4   9   5  10 
"N" "N" "N" "N" "N" "N" "Y" "Y" "Y" "Y" 

非常感谢你!这正是我要找的!干杯,斯蒂芬,非常感谢你!这正是我要找的!干杯,Stef