データ入門:CSV読み込み、確認、summary、基本グラフ
データをRに渡し、中身を見て、最初のヒストグラム・散布図・箱ひげ図まで進みます。
このページの目次
このページのゴールは、CSVを読み込み、データ構造を確認し、簡単な要約とグラフを出して「何が見えそうか」を言葉にすることです。
練習用CSV
まずはサンプルデータで練習できるように、サイト内に小さなCSVを置いています。sample-data/sample_students.csv をダウンロードして、Project フォルダの中に入れてください。
- group:A / B の2群
- study_hours:勉強時間
- score:得点
- satisfaction:満足度(1〜5)
CSVを読み込む
最初は read.csv() を覚えれば十分です。ファイルが見つからない場合は、作業ディレクトリがずれていないかを確認してください。
Import
getwd()
list.files()
df <- read.csv("sample-data/sample_students.csv", header = TRUE)
df
GUI で選びたいときは file.choose() を使っても構いません。
読み込んだら最初に見るもの
データを読んだら、いきなり分析に進まず、中身を確認します。View()、head()、tail()、str() を最初に使います。
Inspect
View(df)
head(df, n = 5)
tail(df, n = 5)
str(df)
整然データの基本
基本は「1列 = 1変数」「1行 = 1観測」「1セル = 1値」です。あとで集計しやすくなるので、まずはこの形を意識すると迷いにくくなります。
- score は得点だけを持つ列
- group は群だけを持つ列
- 複数の情報を1セルに詰め込まない
まず summary() を打つ
最初の全体把握には summary() が便利です。数値列なら最小値、中央値、平均、最大値などをすぐ確認できます。
Summary
summary(df)
mean(df$score)
median(df$score)
sd(df$score)
# 余裕があれば
# install.packages("psych")
# library(psych)
# psych::describe(df)
カテゴリ列は table() で数える
名義尺度や順序尺度の列では、まず度数を確認します。
Table
table(df$group)
table(df$gender)
table(df$satisfaction)
必要な部分だけ抜き出す
データが多く、全体を確認するのに時間がかかるときは、条件を付けて一部だけ見ます。まずは subset() で十分です。
Subset
df_A <- subset(df, group == "A")
df_B <- subset(df, group == "B")
summary(df_A$score)
まず描く3種類のグラフ
最初の可視化は、ヒストグラム(分布)、散布図(関係)、箱ひげ図(中央値・外れ値・ばらつき) で十分です。
ヒストグラム
hist()
hist(df$score,
main = "Histogram of Score",
xlab = "Score",
col = "skyblue",
border = "white")
散布図
plot()
plot(df$study_hours, df$score,
main = "Study Hours vs Score",
xlab = "Study Hours",
ylab = "Score",
pch = 19,
col = "tomato")
箱ひげ図
boxplot()
boxplot(score ~ group,
data = df,
main = "Score by Group",
ylab = "Score",
col = c("#bfd4ff", "#2f67d8"))
補足:図を読む練習
最初は「うまく読めなくても普通」です。まずは 高そう / 低そう / ばらついていそう / かたまりがありそう といった言葉でOKです。
CSVを書き出す
少し加工した結果を保存したいときは write.csv() を使います。
Export
write.csv(df_A, "students_group_A.csv", row.names = FALSE)
ミニ課題
- CSVを読み込む
- summary(df) を打つ
- ヒストグラム、散布図、箱ひげ図を各1つ描く
- 気づきを3つ書く