У меня есть фрейм данных, назовите его DASS:
structure(list(familySID = c(19342, 19267, 19192, 19568, 19415,
19271), time = c("Pre", "Post", "Follow-Up", "Pre", "Post", "Follow-Up"), DASS_stress = c(10,
12, 16, NA_real_, 0, NA_real_), DASS_anx = c(6,
NA_real_, 5, 14, NA_real_, 10), DASS_depr = c(5,
6, NA_real_, 6, 11, NA_real_)), row.names = c("3",
"4", "5", "6", "7", "8"), class = "data.frame")
Теперь это просто заголовок моего полного фрейма данных, который имеет 741 запись.
Я пытаюсь построить график с группами «Pre», «Post» и «Follow-Up» для каждой шкалы DASS_stress, DASS_anx и DASS_depr. Мне нужны средние значения этих шкал, а не исходные значения.
Раньше мне помогали, когда кто-то предлагал сначала сделать длинный формат. У меня есть код их решения здесь:
DASS %>%
pivot_longer(starts_with("DASS_"), names_to = "DASS", values_to = "val") %>%
group_by(time, DASS) %>%
summarize(
n = sum(!is.na(val)),
mu = mean(val, na.rm = TRUE),
se = sd(val, na.rm = TRUE) / sqrt(n),
ci = se * qt(0.95/2 + 0.5, n-1)
) %>%
ggplot(aes(x = DASS, y = mu, fill = time)) +
geom_bar(stat = "identity", position = position_dodge(0.9)) +
geom_errorbar(aes(ymin = mu-se, ymax = mu+se),
position = position_dodge(.9), width = 0.3)
Похоже, они хорошо работают. Тем не менее, я попытался это сделать и получил следующую ошибку:
Error: Aesthetics must be valid data columns. Problematic aesthetic(s): fill = time.
Did you mistype the name of a data column or forget to add after_stat()?
Тогда я попытался переработать свои данные, сделав отдельный фрейм данных под названием DASS_longer для длинного формата DASS, чтобы я мог понять, что пошло не так. в графике. К сожалению, когда я суммирую данные, я получаю среднее значение только для одной записи и без столбца времени.
Кто-нибудь знает, где что-то пошло не так? Я начинаю думать, что это потому, что в моем фактическом фрейме данных было намного больше записей. Опять же, я получаю очень конкретную c ошибку, связанную с aes (в частности, fill = time). Хотя время указывается вверху при обозначении групп. Запуск rlang дает мне дополнительную информацию:
rlang::lasterror()
<error/rlang_error>
Aesthetics must be valid data columns. Problematic aesthetic(s): fill = time.
Did you mistype the name of a data column or forget to add after_stat()?
Backtrace:
1. (function (x, ...) ...
2. ggplot2:::print.ggplot(x)
4. ggplot2:::ggplot_build.ggplot(x)
5. ggplot2:::by_layer(function(l, d) l$compute_aesthetics(d, plot))
6. ggplot2:::f(l = layers[[i]], d = data[[i]])
7. l$compute_aesthetics(d, plot)
8. ggplot2:::f(..., self = self)
Есть мысли? Кроме того, я приложил график, который я ищу, это график, который человек, который помог мне раньше, получил код.