データ入門: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() を覚えれば十分です。ファイルが見つからない場合は、作業ディレクトリがずれていないかを確認してください。

Importcsv
getwd()
list.files()

df <- read.csv("sample-data/sample_students.csv", header = TRUE)
df

GUI で選びたいときは file.choose() を使っても構いません。

···

読み込んだら最初に見るもの

データを読んだら、いきなり分析に進まず、中身を確認します。View()head()tail()str() が最初の四点セットです。

Inspectview
View(df)
head(df, n = 5)
tail(df, n = 5)
str(df)

整然データの感覚

基本は「1列 = 1変数」「1行 = 1観測」「1セル = 1値」です。あとで集計しやすくなるので、まずはこの形を意識すると迷いにくくなります。

  • score は得点だけを持つ列
  • group は群だけを持つ列
  • 複数の情報を1セルに詰め込まない
···

まず summary() を打つ

最初の全体把握には summary() が便利です。数値列なら最小値、中央値、平均、最大値などをすぐ確認できます。

Summarybasic stats
summary(df)
mean(df$score)
median(df$score)
sd(df$score)

# 余裕があれば
# install.packages("psych")
# library(psych)
# psych::describe(df)

カテゴリ列は table() で数える

名義尺度や順序尺度の列では、まず度数を確認します。

Tablecount
table(df$group)
table(df$gender)
table(df$satisfaction)
···

必要な部分だけ抜き出す

全部を見るのが重いときは、条件を付けて一部だけ見ます。まずは subset() で十分です。

Subsetfilter
df_A <- subset(df, group == "A")
df_B <- subset(df, group == "B")
summary(df_A$score)
···

まず描く3種類のグラフ

最初の可視化は、ヒストグラム(分布)散布図(関係)箱ひげ図(中央値・外れ値・ばらつき) で十分です。

ヒストグラム

hist()distribution
hist(df$score,
  main = "Histogram of Score",
  xlab = "Score",
  col = "skyblue",
  border = "white")

散布図

plot()relationship
plot(df$study_hours, df$score,
  main = "Study Hours vs Score",
  xlab = "Study Hours",
  ylab = "Score",
  pch = 19,
  col = "tomato")

箱ひげ図

boxplot()grouped
boxplot(score ~ group,
  data = df,
  main = "Score by Group",
  ylab = "Score",
  col = c("#bfd4ff", "#2f67d8"))

補足:心理的安全な見方

最初は「うまく読めなくても普通」です。まずは 高そう / 低そう / ばらついていそう / かたまりがありそう といった言葉でOKです。

···

CSVを書き出す

少し加工した結果を保存したいときは write.csv() を使います。

Exportwrite
write.csv(df_A, "students_group_A.csv", row.names = FALSE)

ミニ課題

  • CSVを読み込む
  • summary(df) を打つ
  • ヒストグラム、散布図、箱ひげ図を各1つ描く
  • 気づきを3つ書く