1

私はRでいくつかのバープロットを作成しようとしています。これまでに持っているものは次のとおりです。ここに画像の説明を入力してください

この特定のグラフでは、ブラウザーごとにいくつの応答があるかは重要ではありません。各ブラウザーで、どのパーセンテージが「はい」で、どのパーセンテージが「いいえ」であったかを知りたいだけです。

結果の数の代わりに「列のパーセンテージ」を使用するために使用しているテーブルを変換するにはどうすればよいですか?その列の合計によって各列を変換する方法はありますか?(私はRにとても慣れていません)ありがとう!

編集:情報不足で申し訳ありません。追加のパッケージはインストールしていません。Ubuntuにr-baseをインストールしただけです(今朝インストールしました)。dputの出力は次のとおりです。

structure(c(11L, 32L, 3L, 4L, 1L, 0L, 1L, 1L), .Dim = c(2L, 4L
), .Dimnames = structure(list(c("No", "Yes"), c("Chrome", "Firefox", 
"Internet Explorer", "Safari")), .Names = c("", "")), class = "table")

Edit2:私はこの関数を見つけました。これは私が望むことを実行しているように見えますが、なぜそれが機能するのかよくわかりません。

prop.table(mymat, margin=2)*100
4

2 に答える 2

2

2つのレベルを想定しています

barplot(x / rep(apply(x, 2, sum),each=2))

img

> apply(x,2,sum)
       Chrome           Firefox Internet Explorer            Safari 
           43                 7                 1                 2 

これは列の余白です。列の合計を示します。Xをこれらの値で除算する場合は、正しい順序にする必要があります。データは列優先の順序であるため、除算のベクトルとして使用するとapply(x,2,sum)、間違った要素をリサイクルします。必要に応じて転置します。

コマンドで設定each=2すると、呼び出し結果の1つの要素が各列に適用されます(要素を複製することにより)。したがって、レベル数が2であるという仮定。repapply

より一般的な解決策として、を使用できますeach=nrows(x)

于 2012-11-22T03:17:21.163 に答える
2

パーセンテージを計算してプロットするだけでいいですか?

パーセンテージ=はい/総投票数、data['Yes', ] 「はい」列を選択し、列colSumsごとの合計を計算します。したがって、次のようになります。

barplot( data['Yes', ]/colSums(data) )

ここに画像の説明を入力してください

それはあなたが意味したことですか?

于 2012-11-22T03:12:44.013 に答える