カテゴリカルデータからダミー変数を作成するR関数を自作(複数列対応可)(その後)

追記(2017.1.3)

makedummiesパッケージがCRANに登録されました。ブログの このページ を参照して下さい。

内容

以前、 このページ でカテゴリカルデータからダミー変数を作成するR関数を紹介しました。

このブログ自体それほどアクセスがあるわけではありませんが、検索される際のキーワードとして「R ダミー変数」が最も多かったです。

そこでこの関数をGitHubで公開しました(https://github.com/toshi-ara/makedummies)。

Rからは

## install.packages("devtools") # パッケージをインストールしていない場合
library(devtools)
install_github("toshi-ara/makedummies")

でインストールできます。

使用方法はGitHubの例を参照して下さい。

4件のコメント

  1. 荒先生
    こんにちは、先日松本ソフト開発センターのRセミナーでお世話になりました酒井です。
    その時にご紹介いただきましたダミー変数に変換するパッケージを早速使ってみました。
    数量化Ⅰ類などをやる時にはとても便利ですね。

    さて、一つ質問があります。

    > str(Dataset)
    ‘data.frame’: 199 obs. of 8 variables:
    $ 部門 : Factor w/ 2 levels “1課”,”2課”: 1 1 1 1 1 1 1 1 1 1 …
    $ 社員番号: Factor w/ 199 levels “ID-101269″,”ID-101368”,..: 64 88 166 80 151 104 37 …
    $ 性別 : Factor w/ 2 levels “女”,”男”: 2 2 1 1 1 2 1 1 2 2 …
    $ 雇用形態: Factor w/ 3 levels “パ―ト”,”社員”,..: 2 2 3 3 3 2 3 3 2 2 …
    $ 役職 : Factor w/ 9 levels “チ―フ”,”ヘッドチ―フ”,..: 4 7 4 9 9 7 9 9 4 9 …
    $ 年齢 : int 49 39 61 37 34 36 24 47 46 25 …
    $ 勤続 : int 25 17 19 12 0 13 1 10 23 3 …
    $ 年収 : int 9426000 5942000 5699000 32520000 4636000 10431000 3299000 …

    このようなデータの場合に、社員番号は変換したくないという場合はどうしたらいいでしょうか?
    > DAT = makedummies(Dataset,basal_level = TRUE ,numeric = “社員番号”)
    とすると、ダミー変数に変換はされませんが、数値データになってしまいます。

    また、変換したい変数を任意に選択するようなオプションはありませんでしょうか?
    例えば、性別と雇用形態だけを変換したいような場合です。

  2. 酒井先生

    ご無沙汰しております。
    その節はお世話になりました。

    2つ目の質問はcolオプションで対応できるはずです。
    1つ目の質問は現時点では対応していないため、変換後のデータを元のデータで上書きすれば大丈夫です。
    DAT$社員番号 <- Dataset$社員番号 本当はas.isオプションのようなものを追加すればいいのですが。 何かありましたらまた連絡して下さい。 それでは失礼します。 荒 敏昭

  3. 荒敏昭先生
    ご無沙汰しております、以前ご質問させていただきました酒井です。
    さて、前回と同じデータの変換なのですが、64bit版のwindows(7も10も両方とも)では項目名がうまく出ません。Rのバージョンによるのかもしれませんが、何か情報がございましたらお教えください。

    正常
    (Windows7 32bit版 R:i386 3.2.5)
    ‘data.frame’: 199 obs. of 16 variables:
    $ 役職_チーフ : num 0 0 0 0 0 0 0 0 0 0 …
    $ 役職_マネージャー: num 0 0 0 0 0 0 0 0 0 0 …
    $ 役職_課長 : num 1 0 1 0 0 0 0 0 1 0 …
    $ 役職_主任 : num 0 1 0 0 0 1 0 0 0 0 …
    $ 役職_部長 : num 0 0 0 0 0 0 0 0 0 0 …
    $ 役職_無 : num 0 0 0 1 1 0 1 1 0 1 …
    $ 部門_1課 : num 1 1 1 1 1 1 1 1 1 1 …
    $ 部門_2課 : num 0 0 0 0 0 0 0 0 0 0 …
    $ 性別_女 : num 0 0 1 1 1 0 1 1 0 0 …
    $ 性別_男 : num 1 1 0 0 0 1 0 0 1 1 …
    $ 雇用形態_パ.ト : num 0 0 0 0 0 0 0 0 0 0 …
    $ 雇用形態_社員 : num 1 1 0 0 0 1 0 0 1 1 …
    $ 雇用形態_嘱託 : num 0 0 1 1 1 0 1 1 0 0 …
    $ 年齢 : num 49 39 61 37 34 36 24 47 46 25 …
    $ 勤続年数 : num 25 17 19 12 0 13 1 10 23 3 …
    $ 年収 : num 9426000 5942000 5699000 3289000 2945000 …

    項目名の変換エラー
    (Windows7 64bit版、Windows10 64bit版 R:x64 3.5.1)
    ‘data.frame’: 199 obs. of 16 variables:
    $ 役職 : num 0 0 0 0 0 0 0 0 0 0 …
    $ NA. : num 0 0 0 0 0 0 0 0 0 0 …
    $ NA..1 : num 1 0 1 0 0 0 0 0 1 0 …
    $ NA..2 : num 0 1 0 0 0 1 0 0 0 0 …
    $ NA..3 : num 0 0 0 0 0 0 0 0 0 0 …
    $ NA..4 : num 0 0 0 1 1 0 1 1 0 1 …
    $ 部門 : num 1 1 1 1 1 1 1 1 1 1 …
    $ NA..5 : num 0 0 0 0 0 0 0 0 0 0 …
    $ 性別 : num 0 0 1 1 1 0 1 1 0 0 …
    $ NA..6 : num 1 1 0 0 0 1 0 0 1 1 …
    $ 雇用形態: num 0 0 0 0 0 0 0 0 0 0 …
    $ NA..7 : num 1 1 0 0 0 1 0 0 1 1 …
    $ NA..8 : num 0 0 1 1 1 0 1 1 0 0 …
    $ 年齢 : int 49 39 61 37 34 36 24 47 46 25 …
    $ 勤続年数: int 25 17 19 12 0 13 1 10 23 3 …
    $ 年収 : int 9426000 5942000 5699000 3289000 2945000 5282000 2520000 4636000 10431000 3299000 …

  4. 酒井隆司先生

    報告ありがとうございます。

    前回のアップデートである不具合を修正したのですが、その影響が原因でした。
    修正したものをCRANにアップロードし、ソースコードが更新されたのを確認しました。
    近日中にWindows用のバイナリパッケージも更新されると思います。

    それでは失礼します。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です