No.21738 【R】カテゴリカルデータのダミー変数化  【赤羽】 2015/07/20(Mon) 09:28

青木先生,
赤羽と申します,いつもご教示を頂戴し,誠にありがとうございます。
改めて御礼を申し上げます。

カテゴリカルデータのダミー変数化の関数を作成しています。
処理速度で問題があることから,ご教示を頂戴いただけましたら大変に助かります。
どうぞ,よろしくお願いいたします。

関数のシグネチャは,以下の通りです。
function(cname, cdata)
 cname → 列の名前
 cdata → 列データ

具体的な値は,タイタニックの例では以下の通りです。
cname
→ Class,Age,Sex,Alive
cdata
→ 1等,2等,3等,乗務員,,,,
→ 大人,子供,,,,,,,,,
→ 男性,女性,,,,,,,,,
→ 生還,死亡,,,,,,,,,

作成しました関数です。

cat2dummy <- function(cname, cdata){

dat <- factor(cdata)
ncol <- length(levels(dat))

res <- NULL
for (i in 1:length(dat)){
cc <- numeric(ncol)
cc[as.numeric(dat)[i]] <- 1

res <- rbind(res, cc)  # 処理速度で問題あり!

}

 以下,省略
 ・・・・・・・

return(res)

}

性能面で支配的になる箇所は,以下です。

res <- rbind(res, cc)  # 処理速度で問題あり!

行方向に逐次,連結していく幼稚な方法であることから,処理速度で問題があります。

このコード最大限に活かして,apply関数を適用して処理速度の向上を高めたいと思っています。

ご教示を頂戴できれば,大変に助かります。
どうぞ,よろしくお願いいたします。


No.21739 Re: 【R】カテゴリカルデータのダミー変数化  【青木繁伸】 2015/07/20(Mon) 14:55

http://aoki2.si.gunma-u.ac.jp/R/qt3.html
でソースを示している make.dummy 関数と同じ機能を持つ関数でしょうか?

No.21740 【御礼】(Re: 【R】カテゴリカルデータのダミー変数化)  【赤羽】 2015/07/20(Mon) 17:04

青木先生,
赤羽と申します,いつもご教示を頂戴し,誠にありがとうございます。

正に,私が長年,捜し求めていたものでございます!!

ご紹介くださいましたRプログラムの処理のロジックを,勉強させていただきます。
さっそく,活用をさせていただきます。
心から御礼を申しあげます。

● 「統計学関連なんでもあり」の過去ログ--- 047 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る