ロジスティック回帰で使用するには、カテゴリ変数を複数の二分 (「ダミー」) 変数に変換する必要があります。私のデータフレームは次のとおりです。
tdf <- data.frame(first=sample(c("A", "B", "C", "D"), 100, replace=T),
lobe = sample(c("RUL", "RML", "RLL", "LUL", "LLL"), 100, replace=T),
continuous=sample(1:100, 100),
smoker = sample(c("never", "less20", "more20"), 100, replace=T)
)
私は手動で行うことができます
first. <- with (tdf, factor (first))
dummies <- model.matrix(~ first.)
dummies <- dummies[,-1]
tdf <- cbind(tdf, dummies)
因子を「最初」と呼ぶことが重要であることに注意してください。(または、より一般的には「変数」)。ダミー変数はこのプレフィックスをそれぞれの名前に継承し、後で簡単に識別できるようにするためです (「変数 1.因子 2」、「変数 1.因子 3」など)。
私の質問は: プログラムで変数名を割り当てる関数を使用してこれを行うにはどうすればよいですか:
dummify <- function(df, vectorOfColIndices) {
cn <- colnames(df)
for (i in vectorOfColIndices) {
t. <- with (tdf, factor (df[i])) # temporary factor
assign (cn[i], t.) # give it the proper 'Variable.' name
dummies <- model.matrix(~ ????) # Stuck here: how do I call this newly created structure?
...
}
}
後で次のようにデータ フレームを変換できるようにします。
vd <- c(1,2,4) # columns that need to be converted into dummy vars
df <- dummify(df, vd)