Построение временного графика частоты появления определенного значения в наборе данных. - PullRequest
0 голосов
/ 03 июля 2019

У меня есть набор данных о студенческом сообществе университета с 10 столбцами, которые представляют различные факторы, такие как их студенческий идентификатор, пол, этническая принадлежность и т. Д.

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

> head(ethnicitydf)
  admit_term                  ethn_desc
1 2011-10-01            White/Caucasian
2 2011-10-01 Filipino/Filipino-American
3 2011-10-01            White/Caucasian
4 2011-10-01       Latino/Other Spanish
5 2011-10-01      East Indian/Pakistani
6 2011-10-01            White/Caucasian

Я не совсем уверен, как бы я создал график, который имеет admit_term (время) по оси X и частоту, котораякаждая этническая принадлежность встречается для каждого admit_term.Во втором столбце 12 уникальных этнических групп, и я хочу, чтобы частота каждого из 12 этносов для каждого admit_term (всего 6 терминов) была на одном графике, причем каждая этническая принадлежность имеет свой цвет.

Первый шаг IЯ думал, что подсчитываю каждую этническую принадлежность для каждого термина, используя, например, length(which(ethnicitydf$admit_term == "2011-10-01" & ethnicitydf$ethn_desc == "White/Caucasian")) и записываю данные в новый фрейм данных, но я чувствую, что должен быть более быстрый и эффективный способ сделать это.Может быть, использование пакета?Может ли какое-нибудь тело помочь мне?Спасибо!

1 Ответ

2 голосов
/ 03 июля 2019

Гистограмма сделает все за вас.

library(ggplot2)

ethnicitydf <- data.frame(admit_term = sample(c("2011-10-01","2012-10-01","2013-10-01"), 100, TRUE),
                          ethn_desc =sample(c("White/Caucasian","Filipino/Filipino-American","East Indian/Pakistani"), 100, TRUE))

ggplot() +
    geom_bar(data=ethnicitydf, mapping=aes(x=admit_term, fill=ethn_desc), position="dodge")

Создано в 2019-07-03 пакетом Представления (v0.3.0)

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

ggplot() +
    geom_point(data=ethnicitydf, mapping=aes(x=admit_term, colour=ethn_desc), stat="count")

Чтобы получить строки, вам нужно убедиться, что ваша ось Y числовая (переводит текстовые даты в числа, например, годы).

ethnicitydf$admit_term <- as.Date(ethnicitydf$admit_term)

ggplot() +
    geom_line(data=ethnicitydf, mapping=aes(x=admit_term, colour=ethn_desc), stat="count") +
    geom_point(data=ethnicitydf, mapping=aes(x=admit_term, colour=ethn_desc), stat="count")

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