Ошибка при попытке использовать ggplot для создания гистограммы, что происходит? - PullRequest
0 голосов
/ 06 апреля 2020

Итак, я раньше не работал с таким большим набором данных (около 550 записей), поэтому все может запутаться. Сценарий, с которым я работаю, довольно длинный, поскольку он связывает наши данные «Pre» и «Post» из анкет участников с использованием шкалы DASS.

С точки зрения объединения фреймов данных, суммирования и интерпретации данных скрипт работает хорошо. Но мне нужно обновить PowerPoint и с помощью гистограммы, а не только фреймов данных и сводок.

Я пытался использовать встроенную функцию R для создания гистограммы, но все пошло не так, и он продолжал говорить что я не мог подмножество данных. Итак, вместо этого я собираюсь попробовать использовать ggplot. Я не уверен, легче ли это или нет, потому что у меня все еще возникают проблемы.

Мой код выглядит так:

ggplot(ChildALL, aes(x=Pre, Post, y=4:50))+geom_bar(stat="mean")+labs(x="Measure")

Я хочу сделать гистограмму с указанием времени «Pre» и «Post» (рядом друг с другом, возможно, разных цветов). Значение y будет средним, а x будет тремя наборами данных: тревога, депрессия и стресс - все они будут основаны на уже подсчитанных данных из вопросника. Я не уверен, смогу ли я поделиться с вами данными, которые находятся на частном сервере и содержат идентификационную информацию, поэтому некоторые общие рекомендации могут быть полезны.

Ошибка, которую я получаю: «Не могу найти» статистика называется "значит". Который, ладно, может потребоваться указать по-другому, но я застрял на этом этапе, и я могу просто go вернуться к встроенной функции R barplot, так как я хотя бы где-то с этим справился.

Другая информация, которая может помочь: анкета состоит из 68 пунктов. Они уже сгруппированы по соответствующим подшкалам, и на графике не используются дополнительные столбцы, такие как «Startdate C», «familySID C» и все, что указывает мужской или женский. Код для этих имен здесь:

names(ChildALL) <- c("startdateC","familySIDC",
                     "SCAREDC1","SCAREDC2",  "SCAREDC3", "SCAREDC4", "SCAREDC5",
                     "SCAREDC6","SCAREDC7",  "SCAREDC8", "SCAREDC9", "SCAREDC10",
                     "SCAREDC11","SCAREDC12","SCAREDC13","SCAREDC14","SCAREDC15",
                     "SCAREDC16","SCAREDC17","SCAREDC18","SCAREDC19","SCAREDC20",
                     "SCAREDC21","SCAREDC22","SCAREDC23","SCAREDC24","SCAREDC25",
                     "SCAREDC26","SCAREDC27","SCAREDC28","SCAREDC29","SCAREDC30",
                     "SCAREDC31","SCAREDC32","SCAREDC33","SCAREDC34","SCAREDC35",
                     "SCAREDC36","SCAREDC37","SCAREDC38","SCAREDC39","SCAREDC40",
                     "SCAREDC41",
                     "CDIC1", "CDIC2", "CDIC3", "CDIC4", "CDIC5", "CDIC6", "CDIC7",
                     "CDIC8", "CDIC9", "CDIC10","CDIC11","CDIC12","CDIC13","CDIC14",
                     "CDIC15","CDIC16","CDIC17","CDIC18","CDIC19","CDIC20","CDIC21",
                     "CDIC22","CDIC23","CDIC24","CDIC25","CDIC26","CDIC27",
                     "Gender",
                     "FemalePDS1","FemalePDS2","FemalePDS3","FemalePDS4","FemalePDS5",
                     "FemalePDS6","FemalePDS7","FemalePDS8","FemalePDS9","FemalePDS10",
                     "MalePDS1","MalePDS2","MalePDS3","MalePDS4","MalePDS5",
                     "MalePDS6","MalePDS7","MalePDS8","time")

Надеюсь, что из этого получится какой-нибудь совет. Я думаю, что смогу построить этот барплот, если поиграюсь с ним достаточно долго, но я просто хотел посмотреть, что подумают другие люди.

Спасибо заранее.

РЕДАКТИРОВАТЬ: предыдущий график, сделанный бывшим коллегой: enter image description here

Я не уверен, если он сделано в R или нет, как он ушел, не обсуждая этот вопрос со мной. Вполне возможно, что он использовал Excel или что-то в этом роде, а я трачу свое время.

1 Ответ

0 голосов
/ 07 апреля 2020

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

library(ggplot2)
library(dplyr)

ChildALL <- data.frame(
    Time = gl(2,200, labels=c("Pre", "Post")),
    Value=c(sample(0:10, 200, replace = TRUE),
            sample(0:10, 200, replace = TRUE, prob=c(rep(.1, 8),.08, .08, .04))),
    Type = sample(c("Anxiety", "Depression", "Stress"), 400, replace=TRUE),
    stringsAsFactors = TRUE)

ChildALL %>% group_by(Time, Type) %>%
    summarise(SD = sd(Value), Value = mean(Value)) %>% ungroup() %>% 
    ggplot(., aes(x=Type, y=Value,  fill = Time)) +
    geom_bar(stat="identity", position = "dodge") +
    geom_errorbar(aes(ymin= Value - SD, ymax = Value + SD, width=0.2), 
                  position=position_dodge(width=0.90)) + 
    labs(x="Measure")

Создано в 2020-04-06 пакетом представ. (v0.3.0)

...