2016-06-22 4 views
0

私は以下のようなデータを持っています。私はこの変数を、変数のno.ofクラスに等しいカラムに変換したいと思います。Rのマルチクラスの可変列をマルチ列に変換するには?

データ:

variable 
1 red 
2 red 
3 black 
4 red 
5 black 
6 green 
7 black 
8 red 
9 green 

予想される出力:

しようとしました
variable red black green 
1 red  1  0  0 
2 red  1  0  0 
3 black  0  1  0 
4 red  1  0  0 
5 black  0  1  0 
6 green  0  0  1 
7 black  0  1  0 
8 red  1  0  0 
9 green  0  0  1 

data$red = ifelse(data$variable == "red",1,0) 
data$black = ifelse(data$variable == "black",1,0) 
data$green = ifelse(data$variable == "green",1,0) 

コードの上に使用することで、私は私が望むものを達成。しかし、変数に10以上のクラスがある場合、コードを10回書く必要はありません。ですから、これを一度に行うための最善の方法はありますか?

+0

例ベクトルを共有するには 'dput'を使用してください。 –

+1

[N個のカテゴリを持つN個のバイナリ列のカテゴリファクタをRecode]の可能な複製(http://stackoverflow.com/questions/16200241/recode-categorical-factor-with-n-categories-into-n-binary-columns) –

答えて

0
df <- read.table(file = "clipboard", sep = "\t", header=T) 

df <-data.frame(variable= c("red","red","black","red","black","green", 
     "black","red","green")) 
df 

    variable 
1  red 
2  red 
3 black 
4  red 
5 black 
6 green 
7 black 
8  red 
9 green 
class(df$variable) 
[1] "factor" 
model.matrix(~ . + 0, data=df, contrasts.arg = lapply(df, contrasts, contrasts=FALSE)) 

    variableblack variablegreen variablered 
1    0    0   1 
2    0    0   1 
3    1    0   0 
4    0    0   1 
5    1    0   0 
6    0    1   0 
7    1    0   0 
8    0    0   1 
9    0    1   0 
関連する問題