データセットの作り方

1ページ 2ページ

character と factor の違い

この手の問題はChat GPT様にお尋ねしましょう

Rのcharacter変数とfactor変数は、どちらもカテゴリカルデータ(名義変数)を扱う際に使用されますが、その用途とプログラム内での扱いが異なります。

  • character変数: これは一般的なテキストデータを扱うためのもので、特定の順序や階層構造を持たない生のテキストを表します。例えば、"apple", "banana", "cherry" などの文字列が含まれます。
  • factor変数: 限られた数の異なる値(レベル)を持ちます。factorは、データに含まれるカテゴリの順序や階層構造を持つことができ、統計分析やグラフ作成において、これらのカテゴリを区別して扱うことができます。例えば、"低", "中", "高" といった順序尺度のデータを扱う場合に便利です。

ポイント!

  • 表現の違い: character変数は純粋なテキストデータを表現し、factor変数はカテゴリカルデータのレベルを表現します。
  • 順序性: factor変数はオプションで順序を持つことができ、この順序は分析や比較に使用されます。character変数には順序の概念はありません。
ChatGPTの回答を一部改変

CSVファイルに保存

このデータセットをCSVファイルとして保存します

R
write.csv(dat, file="dat.csv", fileEncoding="UTF-8")

作業フォルダに dat というCSVファイルができていれば成功です

このCSVファイルを読み込むと、性別はまたcharacterになります.今度は set という文字の中に格納してみます.

R
set <- read.csv("dat.csv", header=T, fileEncoding = "UTF-8")

確認してみましょう

R
str(set$sex)
> str(set$sex)
 chr [1:6] "male" "male" "female" "male" "female" "female"

やはり単純に文字として認識しているようです

factor変数に変換してみます

R
set$sex <- factor(set$sex )
str(set$sex)
> str(set$sex)
 Factor w/ 2 levels "female","male": 2 2 1 2 1 1

これで factor変数 として処理できます.男性が1、女性2という扱いで、1の男性が「基準カテゴリー」となっています.

変更したい場合は

R
set$sex <- relevel(set$sex, ref="male") 
str(set$sex)
> str(set$sex)
 Factor w/ 2 levels "male","female": 1 1 2 1 2 2
基準カテゴリー

factor() 関数は名義変数をカテゴリカル変数(因子型変数)に変換し、データのカテゴリーは「水準」として定義されます。levels() 関数で表示されるカテゴリカル変数の水準のうち、最初に表示されるカテゴリーがデフォルトで基準カテゴリー(参照カテゴリー)となり、統計モデルでの比較の基点として機能します。relevel() 関数や factor() 関数の levels 引数を使用することで、レベルの順序を指定し、基準カテゴリーを変更することが可能です。

「基準カテゴリー」については以下のご覧ください

コメント欄 『間違い』や『分かりにくい部分』などのご意見もお寄せください

タイトルとURLをコピーしました