整数の入った列を横展開して1,0に変換したい
以下のようなデータフレームdfがあるのですが、
id category
1 3
2 2
3 3
4 1
5 2
6 2
これを
id category1 category2 category3
1 0 0 1
2 0 1 0
3 0 0 1
4 1 0 0
5 0 1 0
6 0 1 0
のような形にしたいと考えています。
現在はこれを
df <- tidyr::spread(df,category,category) #横展開
df.id <- df[,1] #そのままやるとid列も1になってしまうため分離
df.other <- df[,-1]
df.other[!is.na(df.other)] <- 1
df.other[is.na(df.other)] <- 0
df <- cbind(df.id,df.other)
としているのですが、もう少しスマートな方法はないでしょうか?
どなたかご教授お願い致します。