嗨,对社区的所有成员, 我试图找出如何比较我的数据库的元素,并通过一个新的二进制变量识别它们。 我的数据库是这样的:
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不同的所有元素,但日期和陷阱值与列结果中的报告相同。
我尝试了一些代码(基本上来自另一个“类似”问题)和ave
函数,但没有成功。
一如既往,任何提示都会受到赞赏!!
答案 0 :(得分:3)
(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
答案 1 :(得分:1)
您可以对数据框进行双循环:
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"