Построение сложенного и сгруппированного столбца в г - PullRequest
0 голосов
/ 16 марта 2020

В настоящее время я пытаюсь отобразить некоторые данные в R, но это не удается. Мои данные выглядят так:

Мои данные хранятся во фрейме данных, называемом «Голова»: моя переменная ответа - это фактор (называемый «цвет»), имеющий только два уровня («черный» и «белый») Моя первая (и основная) пояснительная переменная - это фактор (называемый «Год» с двумя уровнями («Год 1996» и «Год 2019»). Моя вторичная пояснительная переменная - это фактор (называемый «ДатаКласс») с тремя уровнями («А "," B "и" C "). Таким образом, набор данных выглядит примерно так:

Цвет Год DateClass

Черный 1996 A

Черный 2019 B

Белый 1996 A

Черный 1996 C

Белый 2019 B

Белый 1996 B

... et c

Я хочу изобразить «цвет головы» как пропорцию белого / черного по сравнению с «Годом» и «Классом дат». Я думал о групповой диаграмме и наложении черного и белого, но я не знаю, как это сделать. сделать это. Любые предложения? Вы бы могли построить стеки "цвета" в процентах или в общем количестве?

Спасибо за ваши ответы, с наилучшими пожеланиями

1 Ответ

0 голосов
/ 16 марта 2020

Это то, что вы ищете?

ДАННЫЕ :

df <- data.frame(Colour = c("Black", "Black", "White", "Black", "White", "White"),
                 Year = c(1996, 2019, 1996, 1996,2019, 1996),
                 DateClass = c("A", "B", "A", "C", "B", "B"))

РЕДАКТИРОВАННОЕ РЕШЕНИЕ :

Первая агрегировать данные для получения пропорций Colour на DateClass в подмножествах или df на Year==2019 и, соответственно, Year==2019; сохранить результаты в df1996 и df2019:

df1996 <- aggregate(
  x = df$DateClass[df$Year==1996],
  by = list(df$Colour[df$Year==1996]),
  function(x) prop.table(table(x)))

df2019 <- aggregate(
  x = df$DateClass[df$Year==2019],
  by = list(df$Colour[df$Year==2019]),
  function(x) prop.table(table(x)))

Теперь расположите два кадра данных рядом друг с другом, используя двухпанельный макет:

par(mfrow = c(1,2))
barplot(df1996[,-1], cex.names = 0.8, col = c("blue","red"),
        main = "Black/White by DateClass in 1996", cex.main = 0.8,
        xlab = "1996", ylab = "Proportions")

barplot(df2019[,-1], cex.names = 0.8, col = c("blue","red"),
        main = "Black/White by DateClass in 2019", cex.main = 0.8,
        xlab = "2019", ylab = "Proportions")

enter image description here

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