3

ここで次の問題に取り組んでいます。次のようなデータフレームがあります。

  aa<-c(0,0,0,1,1,0,0)
  bb<-c(1,1,0,0,1,0,1)
  cc<-c(0,1,0,0,0,1,0)

  d<-data.frame(aa,bb,cc)

データは常にバイナリであり、不在/在席データのコードです。私が望んでいるのは、特定の仮定を満たす変数のすべての可能な組み合わせを含む新しい列です。このデータフレームの場合、次のようになります

d$aabb<-ifelse(d$aa=="1"&d$bb=="1"&d$cc=="0",1,0) #aa=1,bb=1,cc=0
d$aacc<-ifelse(d$aa=="1"&d$cc=="1"&d$bb=="0",1,0) #aa=1,bb=0,cc=1
d$bbcc<-ifelse(d$bb=="1"&d$cc=="1"&d$aa=="0",1,0) #aa=0,bb=1,cc=0
d$daabbcc<-ifelse(d$aa=="1"&d$bb=="1"&d$cc=="1",1,0) #aa=bb==cc=1

しかし、私は 30 の列を持っており、それらをすべて手作業で入力したくありません。結果の列名が元の列名の組み合わせである場合など、別の良い点があります(aa+bb->aabb)

関数を見ましたexpand.grid()が、これは私が探していたものではありませんでした よろしくお願いします

4

4 に答える 4

0

すべてのデータはバイナリ、別名論理であるため、可能性のある各組み合わせを数値(ゼロから2 ^ Nまで)に変換してから、@ Thomasの回答と同様に、データフレームの各行を単一のバイナリシーケンスに変換してから、新しい列は単にrow_value[j] == column_numeric_value[k](安価な擬似コード)になります。つまり、単純な 3 列の入力の場合、8 つの可能な出力があります。10 進数の "5" の場合row[j]はtrue で1 0 1、 他のすべての列では false です。row_value[j]row_value[j] == column_numeric_value[5]

于 2013-06-27T12:04:07.870 に答える