2017-06-22 7 views
1

これはこの質問R Convert row data to binary columnsと似ていますが、行数を保持したいと思います。行数を保持しながら、データをバイナリ列に出力する

行数を維持しながら行データをバイナリ列に変換するにはどうすればよいですか?この意図した出力を取得する方法

入力

myData<-data.frame(gender=c("man","women","child","women","women","women","man"), 
        age=c(22, 22, 0.33,22,22,22,111)) 


myData 
    gender age 
1 man 22.00 
2 women 22.00 
3 child 0.33 
4 women 22.00 
5 women 22.00 
6 women 22.00 
7 man 111.00 

gender age man women child 
1 man 22.00 1  0  0 
2 women 22.00 0  1  0 
3 child 0.33 0  0  1 
4 women 22.00 0  1  0 
5 women 22.00 0  1  0 
6 women 22.00 0  1  0 
7 man 111.00 1  0  0 

答えて

5

依存せず、わずかに容易に溶液でbase Rcbindからtableを使用行うためにdcastを使用することができますあのTHERパッケージ:

data.frame(myData, model.matrix(~gender+0, myData))

+0

なぜこれが '0' +そうでない場合は、 'X.Intercept'を必要としていますか? – hhh

+1

@hhh '+ 0'はインターセプトを削除し、参照カテゴリをダミー変数として表現することができます。参照カテゴリは、デフォルトでは最初の値です。つまり、「性別」カテゴリのアルファベット順の最初の値です。 – jkt

1

私たちは、これが

library(data.table) 
dcast(setDT(myData), gender + age + seq_len(nrow(myData)) ~ 
          gender, length)[, myData := NULL][] 

それとも、元のデータセット

cbind(myData, as.data.frame.matrix(table(1:nrow(myData), myData$gender))) 
関連する問題