Динамично генерируйте график решетки R для многих полей

Я задаюсь вопросом, возможно ли следующее.

У меня есть обзор с 100 + вопросы, все категориальные, собранные в 4 местах. Все вопросы маркированы q1, q2 и так далее. Скажем, существуют 100 для простоты.

Я могу визуально сравнить результаты конкретного вопроса через местоположения с:

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

или, с ggplot2,

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

Это дает 4 гистограммы, выровненные вертикально, для одного вопроса.

Я задаюсь вопросом, существует ли программный способ генерировать гистограммы для всех 100 вопросов, так оставленный больше всего у меня есть стопка 4 гистограмм для q1, затем направо стопка 4 гистограмм для q2 и так далее. Предоставленный, это будет длинной линией, но это для визуального контроля только и для определения начальных областей для исследования далее. Прокрутка направо меня устраивает, у меня есть широкоэкранный монитор, таким образом, я получу достойное количество гистограмм, вписывающихся когда-то.

То, что вопросы маркированы 'q' +, счетчик хорош. То, что я не знаю,

  • как сделать этот вид графика с решеткой (или ggplot2?) это - двумерная решетка.
  • как подать такие программно сгенерированные имена полей в эти команды.

Предложения ценятся. Я - программист, но не в R, где я - новичок.

1
задан wishihadabettername 10 August 2010 в 04:46
поделиться

1 ответ

Фокус в том, чтобы получить данные в правильном формате. Вам нужна рамка данных с 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)
)

После этого построить гистограммы очень просто.

lattice:

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

ggplot2:

library(ggplot2)
ggplot(survey, aes(score)) + geom_histogram() + facet_grid(location ~ question)
2
ответ дан 2 September 2019 в 22:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: