Я пытаюсь создать простые линейные диаграммы с r, которые соединяют точки данных в среднем по группам респондентов (также можно было бы пометить их или различать их разными цветами и т. Д.) Мои данные имеют длинный формат и отсортированы, как показано (я также имейте это в широком формате, если это имеет какое-либо значение):
ID gender week class motivation
1 male 0 1 100
1 male 6 1 120
1 male 10 1 130
...
2 female 0 1 90
2 female 6 1 NA
2 female 10 1 117
...
3 male 0 2 89
3 male 6 2 112
3 male 10 2 NA
...
В основном, каждого респондента измеряли n раз, и случаи (неделя) были одинаковыми для всех. Некоторые респонденты отсутствовали один или несколько раз. Скажем, для мотивации. Такие переменные, как пол, класс и идентификатор, не меняются, но меняется мотивация. Я попытался получить линейную диаграмму с помощью ggplot2
## define base for the graphs and store in object 'p'
plot <- ggplot(data = DataRlong, aes(x = week, y = motivation, group = gender))
plot + geom_line()
В качестве группирующей переменной я хочу использовать, например, класс или пол. Однако мой подход не приводит к линиям, соединяющим средние значения по группе. Я также получаю вертикальные линии для каждого случая измерения. Что это значит? Единственный способ, которым я могу это исправить, - это создать новую переменную average.motivation и вычислить среднее значение для каждой группы для каждого случая, а затем назначить это среднее значение для всех членов группы. Однако это означало бы, что я должен был сделать это для каждой отдельной групповой переменной, когда я хочу отображать групповые строки на основе другого фактора. Кроме того, как график обрабатывает недостающие данные? (Если у одного из членов группы отсутствует значение, я все же хочу, чтобы среднее значение группы для этого случая использовалось для вычисления точки, а не пропускало все событие для этой группы).
Изменить: Спасибо, решение с dplyr отлично работает для всех моих категориальных переменных. Теперь я пытаюсь понять, как я могу различать подгруппы, раскрашивая их линии на основе второго / третьего фактора. Например, я рисую 20 линий для групп «class2», но вместо того, чтобы иметь все они в 20 разных цветах, я бы хотел, чтобы они использовали один и тот же цвет, если они принадлежат к одному типу класса («class_type» , например A, B или C = 20 линий, три группы цветов).
Я добавил второй фактор в "mean_data2". Это хорошо работает. Затем я попытался изменить аргумент цвета в ggplot (также пробовал, как в geom_line), но таким образом у меня больше нет 20 строк.
mean_data2 ‹- group_by (DataRlong, class2, class_type, occ)%>% summarize (procras = mean (procras, na.rm = TRUE))
библиотека (ggplot2) ggplot (na.omit (mean_data2), aes (x = occ, y = procras, color = class2)) + geom_point () + geom_line (aes (color = class_type))