Chapter 5 Rの基本操作
【Section 5.5に関連動画を紹介しています。】
5.1 オブジェクト
Rで使用するあらゆる「モノ」はオブジェクト(object)と呼ばれ管理されます。 オブジェクトの準備からRの分析はスタートします。まずは、オブジェクトを準備してみましょう。
<- 1 first_object
オブジェクトは「名前」と「中身」で構成されます。
このコマンドでは、first_object
という名前のオブジェクトに「1」という数値を入れています。
<-
(不等号・ハイフン)は矢印を表していて、左側の名前のオブジェクトに右側の「モノ」を代入する命令です。
このコマンドを実行しても何も表示されませんが、それでOKです。
オブジェクトの名前を指定すると、オブジェクトの中身を表示させることができます。
first_object
## [1] 1
[1]は「1行目」を意味しています。そのあとの「1」が中身です。
また、代入する命令を()
でくくることで、代入させつつ表示させることができます。
second_object
に2を入れて表示させてみましょう。
<- 2) (second_object
## [1] 2
文字列をオブジェクトに入れることもできます。 この場合、文字列を""(引用符)でくくります。
<- "Ritsumeikan University"
first_string_object first_string_object
## [1] "Ritsumeikan University"
ここでは、first_string_object
という名前のオブジェクトに、文字列"Ritsumeikan University"
を入れています。
オブジェクトに入れるものは1つの値ではなく、複数の値にすることもできます。
複数の値を並べたものは「ベクトル」と呼ばれます。
ベクトルはc()
でまとめます。
<- c(1, 2, 3, 4, 5)
first_vector_object 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年後の年齢を計算させてみましょう。
<- 20
age + 10 age
## [1] 30
ここまでは計算結果を単に表示させていました。計算結果をオブジェクトに代入することもできます。
例えば、1 + 1
の結果をone_plus_one
というオブジェクトに代入してみましょう。
<- 1 + 1
one_plus_one 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()
を使ってみましょう。
<- c(18, 21, 22, 23, 34)
age_vector 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()
です。
<- c(18, 21, 22, 23, 34) #年齢のベクトルの作成
age <- c("female", "male", "male", "female", "female") #性別のベクトルの作成
gender <- data.frame(age, gender)
first_dataframe 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
から性別の変数のみを見てみましょう。
$gender first_dataframe
## [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
の中央値を求めてください。