2017-12-09 2 views
0

ggplot2を使用してグループ化された棒グラフを作成しようとしていますが、他のパッケージでも構いません。私はこれに似たいくつかのポストがあることを理解していますが、私の具体的な質問に答えたものは見つけられませんでした。他の質問と回答を検索し、私は、次のコード生成:Yでグループ化された棒グラフの頻度データフレーム

### To remove unwanted rows from the larger data set### 

NestPatch=NestPatch[,c(3,34)] 

### Reshape data frame #### 

dfm <- melt(NestPatch[,c("VOR2Binned", "Factor")],id.vars = 1) 

私はX軸上VOR2Binnedしたいと思う、頻度、および因子変数によってグループ化VOR2Binned(0または1)、これは私が希望「使用済み」および「ランダム」と名前を変更します。私は上記のコードを使用して次の順序のデータフレームで終わる

Factor VOR2Binned 

0 3 
1 3 
0 3 
1 3 
0 2 
1 2 
1 3 
0 2 
1 3 
0 2 
0 3 
1 3 
0 3 
1 3 
0 3 
1 3 
1 2 
0 3 
0 0 

は、ここに私のサンプルデータです。

VOR2Binned variable value 

0 Factor 0 
0 Factor 0 
0 Factor 0 
0 Factor 0 
0 Factor 0 
2 Factor 1 
2 Factor 0 
2 Factor 0 
2 Factor 0 
2 Factor 1 
2 Factor 0 
2 Factor 0 
2 Factor 0 
2 Factor 0 
2 Factor 0 
2 Factor 0 
3 Factor 0 
3 Factor 1 
3 Factor 1 

私は

#### Plot #### 
    ggplot(dfm,aes(x = VOR2Binned,y = variable)) + 
    geom_bar(aes(fill = value),stat = "identity",position = "dodge") + 
    scale_y_log10() 

を続行した場合、私は得る "evalの中のエラー(exprの、ENVIR、enclos):オブジェクトのファクター 'が見つかりません"。

私はVOR2Binnedクラスのそれぞれの周波数を開発するためのステップがないと思います。

+0

あなたが再現可能な例を提供していただけますか?少なくとも、データの 'str()'を提供する必要があります。 MWEは、あなたのデータセットを理解し、あなたが不足している可能性がある場所を理解するのに役立ちます。 –

+0

私の理解が不足して申し訳ありませんが、適切な情報を提供したいと思います。 MWEとは何ですか?このプラットフォーム上でデータのstr()を提供する最良の方法は何ですか? – user5613688

答えて

0

あなたはdata.table使用して気にしない場合は...

# generate your sample data 
require(data.table) 
dt <- data.table(structure(list(
Factor = c(0L, 1L, 0L, 1L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 
1L, 1L, 0L, 0L), VOR2Binned = c(3L, 3L, 3L, 3L, 2L, 2L, 3L, 2L, 3L, 2L, 
3L, 3L, 3L, 3L, 3L, 3L, 2L, 3L, 0L)), .Names = c("Factor","VOR2Binned"), 
row.names = c(NA, -19L), class = c("data.table", "data.frame"))) 

# count occurrences for each VOR2Binned 
dt[, Frequency := .N, by=.(VOR2Binned, Factor)] 

# let's make sure column Factor is really a factor 
dt$Factor <- as.factor(dt$Factor) 
# change name to Used and Available 
levels(dt$Factor) <- c("Used", "Available") 

# let's ggplot it! 
ggplot(dt) + geom_col(aes(VOR2Binned, Frequency, fill=Factor), 
         position="dodge") 
+0

ありがとう、それは完全に動作します。 data.frameを使用しない理由はありますか?私はユーザーのバシが彼の答えを提示する方法のためにのみ尋ねる。 – user5613688

+0

私はそうではないと考えています。それは、単にcount.txtがdata.tableに固有の.Nを使用することです。他の方法で周波数をカウントすると、残りのコードは関係なく動作するはずです。 – baci

0

もちろん、これで何時間も働いてから、質問を投稿してからもう一度やり直すことができました。

dfm <- melt(NestPatch[,c("VOR2Binned", "Factor")],id.vars = 3) 
dfm <-with(NestPatch, table(VOR2Binned, Factor)) 
tbl <- with(NestPatch, table(Factor, VOR2Binned)); barplot(tbl, beside = TRUE, legend = TRUE) 

Used Available Plot

私は、データテーブルを構築するステップがありませんでした。

データを視覚化するにはこれで十分ですが、誰かが援助を受けることができれば、まだggplotを使ってそれを行う方法を理解したいと思います。また、凡例を現在の1と0の要素コードから変更して使用する方法を知っていれば、それは非常に高く評価されます。前もって感謝します。

+0

別のフォローアップとして、Y軸をパーセンテージまたは各バーの上の観測値のパーセンテージとして簡単に変更する方法はありますか? – user5613688

関連する問題