以下のの記事をみて、もうちょっと楽にできるのではと思ってやってみました。

関連チートシート(pdfリンク):

library(ggplot2)
library(dplyr)
## 
## Attaching package: 'dplyr'
##  以下のオブジェクトは 'package:stats' からマスクされています: 
## 
##      filter, lag
##  以下のオブジェクトは 'package:base' からマスクされています: 
## 
##      intersect, setdiff, setequal, union
devtools::session_info()
## Session info --------------------------------------------------------------
##  setting  value                       
##  version  R version 3.2.3 (2015-12-10)
##  system   x86_64, linux-gnu           
##  ui       X11                         
##  language ja                          
##  collate  ja_JP.UTF-8                 
##  tz       <NA>                        
##  date     2016-01-26
## Packages ------------------------------------------------------------------
##  package    * version    date       source                         
##  DBI          0.3.1      2014-09-24 CRAN (R 3.2.0)                 
##  R6           2.1.1      2015-08-19 CRAN (R 3.2.2)                 
##  Rcpp         0.12.3     2016-01-10 CRAN (R 3.2.3)                 
##  assertthat   0.1        2013-12-06 CRAN (R 3.2.0)                 
##  colorspace   1.2-6      2015-03-11 CRAN (R 3.2.0)                 
##  devtools     1.9.1      2015-09-11 CRAN (R 3.2.2)                 
##  digest       0.6.9      2016-01-08 CRAN (R 3.2.3)                 
##  dplyr      * 0.4.3      2015-09-01 CRAN (R 3.2.2)                 
##  evaluate     0.8        2015-09-18 CRAN (R 3.2.2)                 
##  formatR      1.2.1      2015-09-18 CRAN (R 3.2.2)                 
##  ggplot2    * 2.0.0      2015-12-18 CRAN (R 3.2.3)                 
##  gtable       0.1.2      2012-12-05 CRAN (R 3.2.0)                 
##  htmltools    0.3        2015-12-29 CRAN (R 3.2.3)                 
##  knitr        1.12       2016-01-07 CRAN (R 3.2.3)                 
##  magrittr     1.5        2014-11-22 CRAN (R 3.2.0)                 
##  memoise      0.2.1      2014-04-22 CRAN (R 3.2.0)                 
##  munsell      0.4.2      2013-07-11 CRAN (R 3.2.0)                 
##  plyr         1.8.3      2015-06-12 CRAN (R 3.2.1)                 
##  rmarkdown    0.9.2      2016-01-01 CRAN (R 3.2.3)                 
##  scales       0.3.0      2015-08-25 CRAN (R 3.2.2)                 
##  stringi      1.0-1      2015-10-22 CRAN (R 3.2.2)                 
##  stringr      1.0.0.9000 2015-11-12 Github (hadley/stringr@a67f8f0)
##  yaml         2.1.13     2014-06-12 CRAN (R 3.2.0)

1変数

度数のカウントはdplyr::count()でいけました:

kosaki <- iris %>% 
  dplyr::count(Species)
knitr::kable(kosaki)
Species n
setosa 50
versicolor 50
virginica 50

あとはggplot2::geom_barあたりでいけます:

ggplot2::ggplot(kosaki, aes(x=Species, y=n)) +
  geom_bar(stat = "identity")

でもこれくらいならそのままggplot2で処理させる手も:

ggplot2::ggplot(iris, aes(x=Species)) +
  stat_count()

2変数

データ作成します:

V1 <- sample(LETTERS[1:5], 150, replace = TRUE, prob = c(0.1, 0.3, 0.2, 0.25, 0.15))
df <- dplyr::mutate(iris, V1=V1)
knitr::kable(head(df))
Sepal.Length Sepal.Width Petal.Length Petal.Width Species V1
5.1 3.5 1.4 0.2 setosa C
4.9 3.0 1.4 0.2 setosa C
4.7 3.2 1.3 0.2 setosa E
4.6 3.1 1.5 0.2 setosa B
5.0 3.6 1.4 0.2 setosa D
5.4 3.9 1.7 0.4 setosa B

度数分布表を作成:

chitoge <- dplyr::count(df, Species, V1)
knitr::kable(chitoge)
Species V1 n
setosa A 3
setosa B 15
setosa C 15
setosa D 7
setosa E 10
versicolor A 6
versicolor B 14
versicolor C 13
versicolor D 12
versicolor E 5
virginica A 9
virginica B 18
virginica C 8
virginica D 10
virginica E 5

集合グラフ作成:

ggplot2::ggplot(chitoge, aes(x=Species, y=n, fill = V1)) + 
  geom_bar(stat = "identity", position = "dodge") +
  geom_text(aes(label=n), group = "dodge",
            position = position_dodge(width = 0.9), vjust = -0.5)

度数なしでもいいならdfから一気にこれだけでもOK:

ggplot2::ggplot(df, aes(x=Species, fill=V1)) +
  stat_count(position = "dodge")

積み上げグラフ作成…については上のgeom_bar()等の=dodgeを適宜変更すればOKです。積み上げのラベルはこちらのやり方、および記事の最後にある神のメッセージをご覧ください。

Enjoy!