Rの基本 : データセットの作り方
作業フォルダを指定
必ず作業フォルダを指定しておいてください(ファイルの読み込み Step2 参照)
行と列
Rではデータをベクトルの形にして処理します
「治療前」というベクトル(列)を作ってみましょう
治療前 <- c(112, 138, 124, 120, 136, 142)
これを、Rにコピペしてみてください
このようになったら、「治療前」というベクトルをRが認識したことになります
ちゃんと入っているか確認してみましょう
print(治療前)
と入力してリターンをクリックしてください(print関数はなくても出力できます)
Rは青文字で答えを返してくれます
これは、エクセルの列に該当します
イメージはこんな感じです
View(治療前)
ベクトルは縦に並ばずに、横に並ぶので気持ち悪いかもしれませんが、慣れてください・・・
横に並べたい場合は転置します
t(治療前)
[1,]は1行目、[,1] は1列目を示します
よって、これは1行6列のことを意味しています
イメージはこんな感じです
View(t(治療前))
次に2列のデータセットを作ってみます
イメージしやすくなります
data.frame関数で、2つのベクトルを合体させて2列のデータセットを作ります
dat という文字の中に2列からなるデータセットを格納します
治療前 <- c(112, 138, 124, 120, 136, 142)
治療後 <- c(138, 139, 136, 130, 143, 140)
dat <- data.frame(治療前, 治療後)
print(dat)
イメージ
View(dat)
列の追加
dat というデータセットの中に性別というベクトル(列)を追加します
$は「~の中に」とか「~の中の」とか・・・いうイメージです
dat$性別 <- c("男性", "男性", "女性", "男性", "女性", "女性")
print(dat)
View(dat)
要約
summary関数でデータセットの要約を出力できます
summary(dat)
性別がcharacterになっているので、factorに変更します
dat$性別 <- factor(dat$性別)
summary(dat)
性別の詳細を出力してくれます
character と factor の違い
この手の問題はChat GPT様にお尋ねしましょう
Rのcharacter変数とfactor変数は、どちらもカテゴリカルデータ(名義変数)を扱う際に使用されますが、その用途とプログラム内での扱いが異なります。
- character変数: これは一般的なテキストデータを扱うためのもので、特定の順序や階層構造を持たない生のテキストを表します。例えば、
"apple"
,"banana"
,"cherry"
などの文字列が含まれます。- factor変数: 限られた数の異なる値(レベル)を持ちます。factorは、データに含まれるカテゴリの順序や階層構造を持つことができ、統計分析やグラフ作成において、これらのカテゴリを区別して扱うことができます。例えば、
"低"
,"中"
,"高"
といった順序尺度のデータを扱う場合に便利です。ポイント!
ChatGPTの回答を一部改変
- 表現の違い: character変数は純粋なテキストデータを表現し、factor変数はカテゴリカルデータのレベルを表現します。
- 順序性: factor変数はオプションで順序を持つことができ、この順序は分析や比較に使用されます。character変数には順序の概念はありません。
CSVファイルに保存
このデータセットをCSVファイルとして保存します
write.csv(dat, file="dat.csv", fileEncoding="UTF-8")
作業フォルダに dat というCSVファイルができていれば成功です
このCSVファイルを読み込むと、性別はまたcharacterになります
今度は set という文字の中に格納してみます
set <- read.csv("dat.csv", header=T, fileEncoding = "UTF-8")
確認してみましょう
str(set$性別)
やはり単純に文字として認識しているようです
factor変数に変換してみます
set$性別 <- factor(set$性別 )
str(set$性別)
これで factor変数 として処理できます
男性が1、女性2という扱いで、1の男性が「基準」となっています
変更したい場合は
set$性別 <- relevel(set$性別, ref="男性")
str(set$性別)
「基準」については以下のご覧ください
コメント欄 『間違い』や『分かりにくい部分』などのご意見もお寄せください