Rでグループごとのヒストグラムの表示

文系でのRの利用した統計解析: グループごとのヒストグラムの表示

トラックバックできないので伝わらないかもしれませんが……

あやめのデータを例にして。

data(iris)
summary(iris)


一番単純なのはbyかtapplyを使う方法。
しかしこれは如何せん見栄えがしない。

par(mfrow=c(2,2))
by(iris$Sepal.Length, iris$Species, hist)


ヒストグラムを確認しようと思えるぐらいのカテゴリ数であれば、すこし丁寧に一つ一つ描いた方がいいかもしれない。

par(mfrow=c(2,2))
hist(iris[iris$Species=="setosa",]$Sepal.Length, col="red",
  main="setosa", xlim=range(iris$Sepal.Length), xlab="Sepal.Length")
hist(iris[iris$Species=="versicolor",]$Sepal.Length, col="blue",
  main="versicolor", xlim=range(iris$Sepal.Length), xlab="Sepal.Length")
hist(iris[iris$Species=="virginica",]$Sepal.Length, col="green",
  main="virginica", xlim=range(iris$Sepal.Length), xlab="Sepal.Length")


latticeパッケージを使うともっとお手軽かつ美しく描けるかも。

library(lattice)
histogram( ~ Sepal.Length | Species, data=iris, type="count")


最近流行のggplot2だとこんな感じ?

library(ggplot2)
qplot(Sepal.Length, data=iris, facets = Species ~ ., fill=Species)