R言語の入門演習です。
- 問題1:ベクトルの作成と基本統計量
- 問題2:指数関数の計算
- 問題3:データフレームと平均計算
- 問題4:ヒストグラムの作成
- 問題5:中央値と四分位数
- 問題6:カテゴリデータの頻度表
- 問題7:散布図と相関係数
- 問題8:データのフィルタリング
- 問題9: と を計算せよ。
- 問題10:CSVファイルの作成と読み込み
問題1:ベクトルの作成と基本統計量
問題: 1から10までの整数を含むベクトル x
を作成し、その平均、合計、最大値、最小値を求めよ。
模範解答:
x <- 1:10 mean(x) sum(x) max(x) min(x)
解説: 1:10
は1から10までの整数を生成します。mean()
、sum()
、max()
、min()
でそれぞれ統計量を計算します。
問題2:指数関数の計算
問題: 1から5までの整数 x
に対し、指数関数 exp(x)
を計算し、
その結果を (1) 離散的に点プロット、(2) 関数として滑らかな曲線でプロットせよ。
# 離散データの計算とプロット x <- 1:5 y <- exp(x) plot(x, y, type = "p", main = "exp(x) 離散点プロット", xlab = "x", ylab = "exp(x)") # 関数プロット(連続) curve(exp(x), from = 0, to = 5, col = "blue", lwd = 2, add=TRUE, main = "exp(x) の関数グラフ", xlab = "x", ylab = "exp(x)")
解説: exp(x)
は e の x 乗を要素ごとに計算します。plot(type = "p")
を使えば離散的な点を描けます。curve()
を使えば連続的な関数としてプロットできます。
問題3:データフレームと平均計算
問題: 以下のようなデータフレームを作成し、各教科の平均点を求めよ。
df <- data.frame( name = c("A", "B", "C", "D", "E"), math = c(80, 70, 90, 85, 75), english = c(78, 82, 88, 76, 90), science = c(85, 70, 92, 88, 80) ) colMeans(df[ , 2:4])
解説: データフレームで複数列の平均を計算するには colMeans()
を使います。
問題4:ヒストグラムの作成
x <- rnorm(100) hist(x)
解説: rnorm(n)
は平均0、標準偏差1の正規乱数を生成します。hist()
はヒストグラムを描きます。
問題5:中央値と四分位数
x <- rnorm(100) median(x) quantile(x)
解説: quantile()
関数で Q1, Q2(中央値), Q3 などの四分位数が得られます。
問題6:カテゴリデータの頻度表
gender <- c("M", "F", "F", "M", "M", "F", "F", "F") table(gender)
解説: table()
はベクトルのカテゴリ頻度を集計する関数です。
問題7:散布図と相関係数
問題: 指定した相関係数 r
に従う2変量正規分布のデータを生成し、散布図を描き、実際の相関係数を確認せよ。
# 指定した相関係数 r r <- 0.8 # サンプル数 n <- 100 # 独立な標準正規乱数 x <- rnorm(n) noise <- rnorm(n, sd = sqrt(1 - r^2)) # 相関係数 r に基づく y の生成 y <- r * x + noise # 散布図と相関係数 plot(x, y, main = paste("相関係数 r ≈", round(cor(x, y), 2)), xlab = "x", ylab = "y") cor(x, y)
解説: y = r * x + noise
という形で、標準正規乱数 x
と独立ノイズを組み合わせることで、相関係数がおおよそ r
となるデータを生成できます。cor(x, y)
で実際の相関係数を確認します。
問題8:データのフィルタリング
df <- data.frame(name = c("A", "B", "C", "D"), score = c(45, 78, 88, 60)) subset(df, score >= 70)
解説: 条件で行を抽出するには subset()
が便利です。代わりに df[df$score >= 70, ]
も可。
問題9:
と
を計算せよ。
choose(5, 2) # 組み合わせ factorial(5) # 順列
解説: 順列と組合せは choose()
と factorial()
で簡単に求められます。
問題10:CSVファイルの作成と読み込み
問題: 自分でデータを含むCSVファイルを作成・保存し、それをRで読み込んで1列目の平均と標準偏差を求めよ。
# サンプルデータの作成と保存 values <- c(65, 70, 75, 80, 85) data <- data.frame(score = values) write.csv(data, file = "sample.csv", row.names = FALSE) # 作成したCSVファイルの読み込み loaded_data <- read.csv("sample.csv") # 平均と標準偏差の計算 mean(loaded_data$score) sd(loaded_data$score)
解説: write.csv()
関数でCSVファイルとしてデータを書き出し、そのファイルを read.csv()
で再び読み込みます。列にアクセスして mean()
や sd()
を使って基本統計量を計算します。read.csv()
で読み込んだデータフレームの列にアクセスして平均・標準偏差を求めます。