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"を代入してください。
  • incomecityを合わせたデータフレームincome_dataを作成してください。
  • income_dataを用いて、incomeの中央値を求めてください。

5.5 関連動画