投稿

3月, 2017の投稿を表示しています

Rで、データフレームの中身を一括で因子型に変換する方法

例えば、Rで↓こんなデータを扱っているとします。 # サンプルデータを作る Q1 <- c(1, 1, 2, 2) Q2 <- c(1, 2, 1, 2) Q3 <- c(1, 2, 3, 1) df <- data.frame(Q1, Q2 ,Q3) # 中身の確認 df   Q1 Q2 Q3 1  1  1  1 2  1  2  2 3  2  1  3 4  2  2  1 読み込んだときの都合か何かで、データはinteger型とかnumeric型になっていると。 でも、実は質問 Q1、Q2、Q3に、1:はい、2:いいえ、3:どちらともいえない、とかで答えたもので、因子型として扱いたい。 多重対応分析のmcaとかを使おうとすると、 mca(df = df) でエラー: all variables must be factors が出ちゃうとか、そんなシチュエーション。 因子型に変換したいときには、as.factor関数ですが、これはデータフレームに対しては使えない。 こんな時は、あの一家。そう、applyファミリーの登場です。 lapplyを使って、1列ごとにas.factor関数を適用、リストとして返ってきたものを、またデータフレームに戻してやるという流れです。 df.fctr <- data.frame( lapply(df, as.factor) ) # 型の確認 df.fctr$Q1  [1] 1 1 2 2 Levels: 1 2 無事、因子型になりました。