Как построить график распределения по нескольким столбцам? - PullRequest
1 голос
/ 19 января 2020

У меня есть агрегированные данные, которые содержат рейтинги опросов ресторанов по шкале от 1 до 5 звезд.

Как построить график распределения и найти стандартную ошибку в R?

И можно ли проводить более сложные анализы, такие как сгруппированные рейтинги (например, ошибка для всех рестораны быстрого питания, например McDonalds + BurgerKing, все стейк-хаусы и т. д. c.) и t-тесты?

Данные выглядят следующим образом:

Restaurant     Question               1.star  2.stars ...etc

McDonalds      How was the food?      5       6       ...
McDonalds      How were the drinks?   3       4
McDonalds      How were the workers?  2       7
Burger_King    How was the food?      4       11
Burger_King    How were the drinks?   9       3
Burger_King    How were the workers?  12      1

Вот для удобства пустяк:

tribble(
  ~restaurant, ~question,  ~one_star, ~two_star, ~three_star, ~four_star, ~five_star, ~average,

  "McDonalds", "How was the food?",  5, 6, 8, 2, 9, (5*1 + 6*2 + 8*3 + 2*4 + 5*9)/(5 + 6 + 8 + 2 + 9),
  "McDonalds", "How were the drinks?",  9, 8, 7, 5, 1, (9*1 + 8*2 + 7*3 + 5*4 + 5*1)/(9 + 8 + 7 + 5 + 1),
  "McDonalds", "How were the drinks?",  9, 8, 7, 5, 1, (9*1 + 8*2 + 7*3 + 5*4 + 5*1)/(9 + 8 + 7 + 5 + 1),
  "BurgerKing", "How was the food?",  5, 6, 8, 2, 9, (5*1 + 6*2 + 8*3 + 2*4 + 5*9)/(5 + 6 + 8 + 2 + 9),
  "BurgerKing", "How were the drinks?",  9, 8, 7, 5, 1, (9*1 + 8*2 + 7*3 + 5*4 + 5*1)/(9 + 8 + 7 + 5 + 1),
  "BurgerKing", "How were the drinks?",  9, 8, 7, 5, 1, (9*1 + 8*2 + 7*3 + 5*4 + 5*1)/(9 + 8 + 7 + 5 + 1)
)

1 Ответ

0 голосов
/ 19 января 2020

Ваш вопрос довольно широкий, и трудно понять, что вас может заинтересовать, чтобы извлечь из этого набора данных.

Однако вы можете начать с их построения, чтобы иметь представление о том, что они представляют. Вот пример для представления различной звезды, полученной из каждого ресторана, ограненного вопросами (я использовал pivot_longer из tidyr, чтобы изменить форму информационного кадра, а затем ggplot2, чтобы построить их график):

library(dplyr)
library(tidyr)
library(ggplot2)
df %>% pivot_longer(., -c(restaurant, question), names_to = "Var", values_to = "Val") %>%
  mutate(Var = factor(Var, levels = c("average","one_star","two_star","three_star","four_star","five_star"))) %>%
  ggplot(aes(x = Var, y = Val, fill = restaurant ))+
  geom_bar(stat = "identity", position = position_dodge())+
  facet_grid(.~question)+
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

enter image description here

Поскольку вы данные в основном одни и те же данные для каждого ресторана, вы можете видеть, что нет смысла проводить t-тест на этих данных.

Но на ваших реальных данных может иметь смысл сравнить некоторые категории, которые вы могли бы выделить из представления набора данных, в графику.

Надеюсь, это поможет вам понять, что делать с вашим данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...