geom_barというかstat_countの方だと思うけど、例えばこんなデータがあったとして
data <- c(1, 2, 2, 3, 3, 3, NA, NA, NA, NA)
普通に棒グラフを描くとこうだ。
ggplot() + geom_bar(aes(data))
ところがfactorにするとこうだ。
ggplot() + geom_bar(aes(factor(data)))
どうも集計にnaを含むかどうかはfactorであるかどうかに依存しているらしい(正しい動作かどうかはよく分からない)。ちなみにgeom_barとstat_countにはna.rm引数が用意されているが、これは警告の有無を制御するだけでNAが除外されることには変わりがない。
これはLearnBayesパッケージに含まれるstudentdataのDrinkをプロットしようとして気付いたのだが、もしこのようなデータをstat_countに渡す必要が出てきたら、factorで無くするか、NAを除外する必要がある。逆にNAを含めたかったらfactorにしてやる。
install.packages("LearnBayes") library(LearnBayes) data(studentdata) ## NAを除外する方法 ggplot(subset(studentdata, !is.na(Drink)), aes(x = Drink)) + geom_bar() ## characterに変換する方法 ggplot(studentdata, aes(x = as.character(Drink))) + geom_bar()