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
無事、因子型になりました。
# サンプルデータを作る
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
無事、因子型になりました。
コメント
コメントを投稿