2017-10-03 13 views
0

に要因のために、スタック内の割合を計算し、棒グラフを積み重ね。私は比例積み重ね棒グラフを表示し、サイトごとに古い自動車のパーセンテージと新しいパーセンテージのパーセンテージを表示したいと思います。私は、グラフがサイト間の簡単な比較のために比例するようにしたいと思います。比例私は因子クラスの2つの変数、サイトと車とのデータフレーム(DF1)を持っているR

私は下の出力によく似ているグラフが欲しいですが、yaxis = Site、xaxis =すべての車の合計(100%)、fill = Carのようにしたいと思います。

開始点(DF):

Df1 <- data.frame(Site=c("GA","CA","NY","CA","NY","CA"),Car=c("new","new","new","old","old","new")) 

所望の出力:

library(gcookbook) 
library(plyr) 
ce = ddply(cabbage_exp, "Date", mutate, percent_weight = Weight/sum(Weight) * 100) 
ggplot(ce, aes(x=Date, y=percent_weight, fill=Cultivar)) + 
geom_bar(stat='identity') 

私の試み:

library(plyr) 
Df2 <- ddply(Df1,"Site",transform, 
PercentCar = count(Car)/sum(count(Car))*100) 
ggplot <- (Df2, aes(x=PercentCar, y=Site,fill=Car)) 

答えて

1

基地R溶液。

## Some test data 
Site = sample(1:3, 20, replace=TRUE) 
Car = sample(c("Old", "New"), 20, replace=TRUE) 

T1 = table(Site, Car) 
Prop1 = T1/rowSums(T1) 
barplot(t(Prop1), horiz=TRUE, col=rainbow(2)) 

Proportional barplots

1
私はdplyr使用してい

GROUP_BYではなくplyrデータを口論します。

library(dplyr) 
Df1 <- data.frame(Site=c("GA","CA","NY","CA","NY","CA"), 
        Car=c("new","new","new","old","old","new")) 
Df2 <- Df1 %>% 
    group_by(Site, Car) %>% 
    count() %>% 
    ungroup() %>% 
    mutate(prop = n/sum(n)) 

ggplot(Df2, aes(x = Site, y = prop, fill = Car)) + 
    geom_bar(stat = "identity") + 
    coord_flip() 

だから何が起こっているのか:Iグループのサイトと車の両方で、両方の変数は、データに滞在するように、とそうcount()関数は、CAからの古い車やCAから新しい車を区別していることその後、私はグループ解除Iがのmutateにおける新しい小道具列()を作成するとき、「SUM(N)」ビット和列全体ではなく、唯一の各グループ内のN個の列を合計します。

enter image description here

+0

エイドリアン・マーティン:私はmutate_impl(.dataの、ドット)でエラーが出ます:オブジェクトのFREQ 'が見つかりません。私はprop = n/sum(n)を推測しています。しかし、車はDF2にあるように見える、または間違えていないのですか?カウント(車)?上のグラフとは少し異なるものを入手してください。 – LLL

+0

あなたが正しいです、コードを修正してください。なぜそのコードが以前に働いたのか分かりません。 –

関連する問題