Chapter 5 Rの基本操作
【Section 5.5に関連動画を紹介しています。】
5.1 オブジェクト
Rで使用するあらゆる「モノ」はオブジェクト(object)と呼ばれ管理されます。 オブジェクトの準備からRの分析はスタートします。まずは、オブジェクトを準備してみましょう。
first_object <- 1 オブジェクトは「名前」と「中身」で構成されます。
このコマンドでは、first_objectという名前のオブジェクトに「1」という数値を入れています。
<-(不等号・ハイフン)は矢印を表していて、左側の名前のオブジェクトに右側の「モノ」を代入する命令です。
このコマンドを実行しても何も表示されませんが、それでOKです。
オブジェクトの名前を指定すると、オブジェクトの中身を表示させることができます。
first_object## [1] 1
[1]は「1行目」を意味しています。そのあとの「1」が中身です。
また、代入する命令を()でくくることで、代入させつつ表示させることができます。
second_objectに2を入れて表示させてみましょう。
(second_object <- 2)## [1] 2
文字列をオブジェクトに入れることもできます。 この場合、文字列を""(引用符)でくくります。
first_string_object <- "Ritsumeikan University"
first_string_object## [1] "Ritsumeikan University"
ここでは、first_string_objectという名前のオブジェクトに、文字列"Ritsumeikan University"を入れています。
オブジェクトに入れるものは1つの値ではなく、複数の値にすることもできます。
複数の値を並べたものは「ベクトル」と呼ばれます。
ベクトルはc()でまとめます。
first_vector_object <- c(1, 2, 3, 4, 5)
first_vector_object## [1] 1 2 3 4 5
ここでは、first_vector_objectというオブジェクトに、1から5までの数値を代入しています。
文字列のベクトルも作ることができるので、試してみてください。
★練習問題
third_objectという名前のオブジェクトに10000を代入し、確認してください。my_nameという名前のオブジェクトにあなたの名前(文字列)を代入し、確認してください。second_vector_objectという名前のオブジェクトに数値のベクトル1, 1, 2, 3, 5, 8を代入し、確認してください。
5.2 簡単な計算
Rでの簡単な計算をしてみましょう。足し算・引き算は日常用語と同じく+, -を用います。
1 + 1## [1] 2
5 - 2## [1] 3
掛け算は*、割り算は/を使います。また、累乗は^です。日常用語とは異なりますが、Excelと同じです。
2 * 3## [1] 6
10 / 2## [1] 5
4 ^ 2## [1] 16
ここまでは数値同士で計算させていましたが、数値を代入したオブジェクトも使うことができます。例えば、`age’に年齢を代入しておき、10年後の年齢を計算させてみましょう。
age <- 20
age + 10## [1] 30
ここまでは計算結果を単に表示させていました。計算結果をオブジェクトに代入することもできます。
例えば、1 + 1の結果をone_plus_oneというオブジェクトに代入してみましょう。
one_plus_one <- 1 + 1
one_plus_one## [1] 2
オブジェクトone_plus_oneには計算結果2が代入されています。
★練習問題
- オブジェクト
aに3を、オブジェクトbに4を代入してください。 a,bそれぞれを2乗したものの和をとり、結果が25となることを確認してください。
5.3 関数
Rではオブジェクトから別のオブジェクトを生成するために「関数(function)」を用います。
関数の使い方に慣れていきましょう。
関数は関数名(引数)という構造で使います。
引数(argument)は「ひきすう」と読みます。
ここでは、簡単な関数の例を紹介します。 その他の関数はその都度紹介します。
5.3.1 数値に対する関数
皆さんが数学で勉強してきた関数をRの関数として使うことができます。例えば平方根をとる関数sqrt()を使ってみましょう。
sqrt(4)## [1] 2
ここでは、sqrt()が関数、引数は4です。4の平方根をとった結果として2が表示されています。他の数式として例えば自然対数をとるlog()があります。
★練習問題
- オブジェクト
aに3を、オブジェクトbに4を代入してください。(前の問題と同様) a,bそれぞれの2乗して和をとったものの平方根をとり、結果が5となることを確認してください。- ヒント:前の問題の計算全体を
sqrt()のかっこでくくってください。
- ヒント:前の問題の計算全体を
5.3.2 ベクトルに対する関数
関数の引数は数値だけでなく、ベクトルをとることもできます。統計分析ではこちらをよく使います。例えば、年齢のデータが入ったベクトルage_vector <- c(18, 21, 22, 23, 34)を考えます。
例えば、ベクトルの最小値を取り出すmin()を使ってみましょう。
age_vector <- c(18, 21, 22, 23, 34)
min(age_vector)## [1] 18
一番年齢が若い人が18歳であることが確認できます。最大値を取り出すのはmax()です。
心理学統計法で学んだ平均・標準偏差などの統計量も計算することができます。平均はmean()、中央値はmedian()、(不偏)標準偏差はsd()を使います。
mean(age_vector)## [1] 23.6
median(age_vector)## [1] 22
sd(age_vector)## [1] 6.107373
★練習問題
- オブジェクト
income_vectorに数値のベクトル10, 100, 1000, 10000, 100000を代入してください。 income_vectorの平均・中央値・標準偏差をそれぞれ求めてください。
5.4 データフレーム
多くのデータは、表形式でまとめられます。 縦方向に観測値を、横方向に変数を並べたデータのことをRではデータフレームと呼びます。
例として、年齢のベクトルage_vectorと性別のベクトルgender_vectorを合わせてデータフレームを作成してみましょう。
データフレームを作成する関数はdata.frame()です。
age <- c(18, 21, 22, 23, 34) #年齢のベクトルの作成
gender <- c("female", "male", "male", "female", "female") #性別のベクトルの作成
first_dataframe <- data.frame(age, gender)
first_dataframe## age gender
## 1 18 female
## 2 21 male
## 3 22 male
## 4 23 female
## 5 34 female
1人目が18歳の女性、2人目が21歳の男性…を表すデータフレームが作成できました。 Chapter @ref(#ImportData)ではExcelファイルなどからデータのRにインポートする方法を学びますが、その際は自動的にデータフレームとしてインポートされます。
データ分析の際に、データフレームのうち特定の変数だけを使いたい場合がよくあります。
その際は、データフレーム名$変数名と表記することで、特定の変数を使うことができます。
例えば、先ほど作成したfirst_dataframeから性別の変数のみを見てみましょう。
first_dataframe$gender## [1] "female" "male" "male" "female" "female"
性別のベクトルを取り出すことができました。 関数と組み合わせると、年齢の平均値を以下のように計算できます。
mean(first_dataframe$age)## [1] 23.6
★練習問題
- オブジェクト
incomeに数値のベクトル10, 100, 1000, 10000, 100000を代入してください。 - オブジェクト
cityに文字列のベクトル"ibaraki", "takatsuki", "ibaraki", "takatsuki", "takatsuki"を代入してください。 incomeとcityを合わせたデータフレームincome_dataを作成してください。income_dataを用いて、incomeの中央値を求めてください。