1

以下が可能かどうか疑問に思っています。

4 つの場所で収集された 100 以上の質問をすべて分類した調査があります。すべての質問には、q1、q2 などのラベルが付けられています。簡単にするために100個あるとしましょう。

特定の質問の結果をさまざまな場所で視覚的に比較できます。

library (lattice);
histogram(~ q75 | location, data = survey, layout=c(1,4));

または、ggplot2 を使用すると、

library (ggplot2);
qplot(q75, data=survey) + facet_grid(location ~ .);

これにより、 1 つの質問に対して縦に並べられた 4 つのヒストグラムが得られます。

100 の質問すべてのヒストグラムを生成するプログラムによる方法があるかどうか疑問に思っているので、一番左に q1 の 4 つのヒストグラムのスタックがあり、次に右に q2 の 4 つのヒストグラムのスタックがあります。確かに、それは長い列になるでしょうが、これは目視検査のみであり、最初の領域を特定してさらに調査するためのものです. 右にスクロールしても問題ありません。ワイド スクリーン モニターを使用しているので、一度に適切な数のヒストグラムを取得できます。

質問が「q」+カウンターでラベル付けされているのは良いことです. 私が知らないのは

  • ラティス(またはggplot2?)でこの種のプロットを作成する方法は、二次元ラティスです。
  • そのようなプログラムで生成されたフィールド名をこれらのコマンドに入力する方法。

提案を歓迎します。私はプログラマーですが、私が初心者である R ではありません。

4

1 に答える 1

2

秘訣は、データを正しい形式で取得することです。質問、場所、スコアの 3 つの列を持つデータ フレームが必要です。(reshapeパッケージは、データセットの操作を支援する場合があります。)

n_questions <- 100
n_responses <- c(North = 89, East = 37, South = 57, West = 71)
n_locations <- length(n_responses)
total_responses <- sum(n_responses)

survey <- data.frame(
  question = unlist(lapply(n_responses, function(x) rep(seq_len(n_questions), each = x))),      
  location = rep(c("North", "East", "South", "West"), times = n_questions * n_responses),
  score = sample(n_questions, n_questions * total_responses, replace = TRUE)
)

その後、ヒストグラムを描くのは簡単です。

格子:

library(lattice)
library(latticeExtra)
useOuterStrips(histogram(~ score | question * location, data = survey))

ggplot2:

library(ggplot2)
ggplot(survey, aes(score)) + geom_histogram() + facet_grid(location ~ question)
于 2010-08-10T12:56:33.087 に答える