名義尺度のベクトル
名義尺度のベクトル:曜日を入力する
曜日や場所など、種類を区別するためのデータを「名義尺度」と呼びます。例えば、月曜日と火曜日は異なる曜日ですが、数値のように大小を比較するものではありません。まず、6日間の曜日を入力してみましょう。文字を入力するときは、それぞれを半角の引用符「”」で囲みます。見た目が似ている“ や”は使わないでください。
day <- c("月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日")
print(day)> day <- c("月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日")
> print(day)
[1] "月曜日" "火曜日" "水曜日" "木曜日" "金曜日" "土曜日"
カテゴリとして扱う:factor()
上のコードで作成した day は、「文字型」のベクトルです。曜日などの分類を表すデータを、Rでは「ファクター型」として扱うことができます。
day <- factor(
day,
levels = c("月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日")
)
print(day)[1] 月曜日 火曜日 水曜日 木曜日 金曜日 土曜日
Levels: 月曜日 火曜日 水曜日 木曜日 金曜日 土曜日
factor() は、データをファクター型に変換する関数です。levels では、カテゴリの一覧と表示順を指定しています。
順序のあるカテゴリの場合
「軽度・中等度・重度」のように、カテゴリに順序があるデータを「順序尺度」と呼びます。順序も含めて扱う場合は、levels で順番を指定し、ordered = TRUE を加えます。
severity <- c("軽度", "重度", "中等度")
severity <- factor(
severity,
levels = c("軽度", "中等度", "重度"),
ordered = TRUE
)※ 曜日を月曜日から順に表示することと、重症度のような大小の順序を持たせることは異なります。
血圧や身長など、数値の大きさや差に意味があるデータは、通常は数値型のまま扱います。
データフレーム:複数のベクトルを表にまとめる
Rでは、Excelの一覧表のように、行と列でデータをまとめたものを「データフレーム」と呼びます。これまでに作成したベクトルを、それぞれ表の1列としてまとめてみましょう。
例:歩行練習前後の血圧を表にする
患者Aさんの収縮期血圧を、月曜日から土曜日までの6日間、歩行練習の前後に測定したとします。ここでは、練習した曜日・時間帯・場所も記録した架空のデータを使います。
- pre:歩行練習前の血圧(mmHg)
- post:歩行練習後の血圧(mmHg)
- day:曜日
- time:時間帯(AM:午前、PM:午後)
- place:歩行練習の場所(屋外、室内)
ベクトルからデータフレームを作る
まず、それぞれのデータを月曜日から土曜日の順に入力します。
pre <- c(112, 138, 124, 120, 136, 142)
post <- c(138, 139, 136, 130, 143, 140)
day <- c("月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日")
time <- c("AM", "PM", "AM", "AM", "PM", "PM")
place <- c("屋外", "室内", "室内", "室内", "屋外", "室内")次に、data.frame() を使って、5つのベクトルを一つの表にまとめます。作成した表は、data という名前で保存します。
data <- data.frame(pre, post, day, time, place)
print(data)> print(data)
pre post day time place
1 112 138 月曜日 AM 屋外
2 138 139 火曜日 PM 室内
3 124 136 水曜日 AM 室内
4 120 130 木曜日 AM 室内
5 136 143 金曜日 PM 屋外
6 142 140 土曜日 PM 室内
この表は、1行が1日分の記録、1列が一つの変数に対応しています。同じ行のデータが同じ日の記録になるように、各ベクトルの値の順番と個数をそろえてください。
Excelのような表形式で確認するには、View() を使います。
View(data)
データフレームから1列を取り出す:`$`
データフレームから特定の列をベクトルとして取り出すには、`$` を使います。`データフレーム名$列名` の形で入力します。
pre_2 <- data$pre
print(pre_2)
mean(pre_2)
sd(pre_2)> print(pre_2)
[1] 112 138 124 120 136 142
> mean(pre_2)
[1] 128.6667
> sd(pre_2)
[1] 11.77568
data$pre:表 data から、歩行練習前の血圧が入った pre 列を取り出します。
pre_2 <- data$pre:取り出したデータを、pre_2 という名前で保存します。
print(pre_2):保存したデータを表示します。
mean(pre_2):平均値を求めます。
sd(pre_2):値のばらつきを表す「標準偏差」を求めます。
