1

以下に作成された次のデータフレームがあります。

temp <- as.data.frame(with(uadm, table(prlo_state_code)))

11個のダミー変数を作成しようとしています。トップ10のそれぞれに1つと「その他」。トップ10は、次の方法で簡単に見つけることができます。

#top10
temp <- temp[order(temp$Freq, decreasing=T),]
head(temp, n=10)

Rが素晴らしいことはわかっているので、トップ10からダミー変数を自動作成(および名前付け)し、残りを「その他」と呼ばれる最終ダミーに折りたたむのは簡単だと思います。

ヘルプや洞察を事前に感謝します。

4

2 に答える 2

6

ダミー変数が必要になることはめったにありません。Rはサイレントにそれらを作成します。

トップ10に含まれていないすべてのクラスをまとめたい場合は、とを使用できifelseます%in%

x <- sample( LETTERS, 1e4, replace=TRUE, p=runif(26) )
top10 <- names( sort(table(x), decreasing=TRUE)[1:10] )
y <- ifelse( x %in% top10, as.character(x), "Rest" )
table(y)

どうしてもダミー変数が必要な場合は、で作成できますmodel.matrix

model.matrix(~y) 
于 2012-02-23T02:45:13.403 に答える
3

因子クラスの変数が数式に入力されると、Rの回帰関数がmodel.matrixの必要な列を構成します。これはすべて自動です。デフォルトのコントラストは、最初の要素レベルと他の各レベルの間、いわゆる「治療コントラスト」です。他の選択も可能です。

于 2012-02-23T02:53:05.990 に答える