ggplot2に積み上げ棒グラフを作成して、各カテゴリ変数に対応する値の割合を表示しようとしています。ここでは、私が作業しようとしているデータの例を示します。習慣のfacet_gridでggplot2の複数のカテゴリ変数を持つ積み上げ棒グラフ
sampledf <- data.frame("Death" = rep(0:1, each = 5),
"HabitA" = rep(0:1, c(3, 7)),
"HabitB" = rep(1:2, c(4, 6)),
"HabitC" = rep(0:1, c(6, 4)))
各私は積み上げ棒グラフを作成するために使用していた列であり、私はfacet_gridにおける死の列を使用します。私は棒グラフの各習慣の値のパーセンテージを表示しようとしています。
出力データは、Death = 0、HabitAの値が60%で、値の40%が1で、Death = 1では100%の値に変換されるはずです。ハビタ値が、私はこの使用してggplotとGROUP_BYのようなグラフを生成している1.
あり、1つの属性のみのために要約し、私はこれは、データ内に複数の質的属性でどのように動作するかを確認していません。
sampledf %>%
group_by(Death, HabitA) %>%
summarise(count=n()) %>%
mutate(perc=count/sum(count))
これは私がただ一つの変数のために欲しいものを生成するが、私は、引数によって、グループ内の別の属性を含む場合、それは私が探していますものではありません、すべての3つの属性の組み合わせのための割合をカウント返します。私はsummarise_at/mutate_atを使ってみましたが、動作していないようです。
sampledf %>%
group_by(Death) %>%
mutate_at(c("HabitA", "HabitB"), Counts = n())
Rでこれを行うと、ggplot2の入力として結果のデータを使用するための簡単な方法はありますか?
編集:
私は、データを再構築しようとした私のプロットを構築するために、長いフォームを使用。ここに私が持っているものがあります。
long <- melt(sampledf, id.vars = c("Death"))
結果のデータはこの形式です。
Death variable value
1 0 HabitA 0
2 0 HabitA 0
3 0 HabitA 0
4 0 HabitA 1
5 0 HabitA 1
6 1 HabitA 1
7 1 HabitA 1
私は現在、構築しようとしていますggplotは、各レベルがvariable
列で発生した合計回数をカウントしているため、プロットを構築するためにvalue
属性を使用するかどうかはわかりません。
ggplot(long, aes(x = variable, fill = variable)) +
geom_bar(stat = "count", position = "dodge") + facet_grid(~ Death)
を追加しました。これを行う方法のいくつかのオプションについては、[here](https://stackoverflow.com/a/25856135/2461552)を参照してください。 – aosmith