Как создать гистограмму из файла Excel в R?

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

Мой набор данных выглядел так в файле Excel. Я хочу создать столбчатую диаграмму с накоплением или сгруппированными столбцами с этой информацией и сравнить уровень депрессии между двумя университетами. На уровне депрессии первое значение представляет NSU, а второе значение - DIU.

University:  NSU, DIU;
No Depression: 59.7%, 40.3%
; Mild: 55.2%, 44.8%
; Moderate: 51.1%, 48.9%
; Mod.Severe: 53.3%, 46.7%
; Severe: 50%, 50%

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

mydf <- data.frame( Normal=c(NSU=59.7, DIU=40.3), 
  Mild=c(55.2,44.8), 
  Moderate = c(51.1,48.9), 
  ModeratelySevere=c(53.3,46.7), 
  Severe = c(50,50))

barplot(t(as.matrix(mydf)), beside=TRUE)

У меня получился штриховой график, но они разделены на две группы. Весь уровень депрессии NSU с одной стороны и весь уровень депрессии DIU с другой стороны.

Мой результат

Но я хочу представить каждый из уровней депрессии по их университету. Это означает, что по оси X будет 5 уровней. Нормальный, Мягкий, Умеренный, Мод. Север, Тяжелый. И каждый уровень представит 2 уровня депрессии студентов вузов.

Мой ожидаемый график


person Shakil Ahmed Shaon    schedule 28.08.2019    source источник
comment
удалите t из оператора диаграммы, barplot(as.matrix(mydf), beside=TRUE)   -  person G5W    schedule 28.08.2019


Ответы (1)


В качестве альтернативы используйте ggplot и tidyr:

library(ggplot2)
library(tidyr) #For gather

mydf <- data.frame( University = c("NSU", "DIU"),
                    Normal=c(59.7,40.3), 
                    Mild=c(55.2,44.8), 
                    Moderate = c(51.1,48.9), 
                    ModeratelySevere=c(53.3,46.7), 
                    Severe = c(50,50))


mydf %>% 
  gather(Depression, Level, -University) %>% 
  ggplot(aes(Depression, Level, fill = University, group = University)) +
  geom_bar(stat = "identity", position = "dodge") 
person Scott    schedule 28.08.2019
comment
@ Scott-U решил мою предыдущую проблему. Я попытался создать фрейм данных другим способом, чтобы попрактиковаться в вашем методе, и получил ошибку. ›Df2 = data.frame (Депрессия = c (Нормальная, Легкая, Умеренная, Умеренно тяжелая, Серьезная), Процент = c (19,9, 36,9, 34,8, 5,4, 2,8))› df2% ›Сборка% (Депрессия, Уровень, - Percent)% ›% + ggplot (aes (Depression, Level, fill = Percent, group = Percent)) + geom_bar (stat = identity, position = dodge) Ошибка: data должен быть фреймом данных или другим объектом, который может быть приведен fortify(), это не объект S3 с классом "не". Вы случайно передали aes() аргументу data? - person Shakil Ahmed Shaon; 28.08.2019
comment
То, как вы определили df2, звучит так, будто оно уже написано в развернутой форме и не требует / не может быть собрано. Вызов ggplot ожидает увидеть переменные University и Level, но в вашей таблице их нет. - person Jon Spring; 28.08.2019