2

コミュニティのすべてのメンバーにこんにちは。DB の要素を比較し、新しいバイナリ変数でそれらを識別する方法を見つけようとしています。私のDBは次のようなものです:

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が、失敗しました。いつものように、ヒントをいただければ幸いです!!

4

2 に答える 2

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
于 2013-05-15T11:27:44.267 に答える
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" 
于 2013-05-15T11:36:09.973 に答える