私はこのようなものを意味します:
DataFrame
カテゴリまたは名目上の可能性のある列があります。観測値(行)ごとに、変数のすべての可能な値が独自のバイナリ変数になる新しい行を生成したいと思います。たとえば、このマトリックス(最初の行は列ラベルです)
'a' 'b' 'c'
one 0.2 0
two 0.4 1
two 0.9 0
three 0.1 2
one 0.0 4
two 0.2 5
次のようなものに変換されます:
'a' 'b' 'c'
one two three [0.0,0.2) [0.2,0.4) [0.4,0.6) [0.6,0.8) [0.8,1.0] 0 1 2 3 4 5
1 0 0 0 1 0 0 0 1 0 0 0 0 0
0 1 0 0 0 0 0 1 0 1 0 0 0 0
0 1 0 0 0 0 0 1 1 0 0 0 0 0
0 0 1 1 0 0 0 0 0 0 1 0 0 0
1 0 0 1 0 0 0 0 0 0 0 0 1 0
0 1 0 0 1 0 0 0 0 0 0 0 0 1
初期行列の各変数(列)は、すべての可能な値にビニングされます。カテゴリの場合、可能な値はそれぞれ新しい列になります。フロートの場合、値は何らかの方法でビニングされます(たとえば、常に10個のビンに分割されます)。それがintの場合、それはすべての可能なint値、またはおそらくビニングである可能性があります。
参考:私の実際のアプリケーションでは、テーブルには最大200万行があり、完全な「拡張」マトリックスには数百の列が含まれる場合があります。
この操作を実行する簡単な方法はありますか?
これとは別に、Burtテーブル(クロス集計の対称行列)を実際に計算しようとしているので、このステップをスキップすることもできます。関数で同様のことを行う簡単な方法はありcrosstab
ますか?それ以外の場合、分割表の計算は単純な行列の乗算です。