Я пытаюсь лучше понять ggplot2, поэтому, пока я ищу способ выполнить задачу ниже, я также хотел бы объяснить, почему это не работает в настоящее время. До сих пор я не мог найти информацию по этой теме.Оценка выражения внутри ggplot2
Оба моих вопроса касаются использования выражений внутри ggplot2.
У меня есть data.frame
set.seed(1)
DF <- data.frame(A = 1:24, B = LETTERS[rep(1:4,6)], C = rep(1:3,8))
head(DF, n = 9)
# A B C
#1 1 A 1
#2 2 B 2
#3 3 C 3
#4 4 D 1
#5 5 A 2
#6 6 B 3
#7 7 C 1
#8 8 D 2
#9 9 A 3
Я хочу, чтобы построить среднее значение столбца А, сгруппированных по значениям B без преобразования мои данные. я ожидал бы, что можно сделать что-то вроде следующего:
ggplot(DF) + geom_point(aes(x = B , y = mean(A), group = B))
но возвращает следующее , где среднее (A) является одинаковым для всех значений В.
Как мог Я собираюсь сделать это без преобразования моих данных?
Другой барьер, который я оказываюсь против время от времени пытается положить выражение внутри facet_grid() или facet_wrap()
Например, скажем, я хочу использовать модульное разделение, чтобы сделать новый временный колонке, подобной фасете, позже:
DF$A %% 4
1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0
Я мог бы привязать этот столбец к моей кадре данных. Но давайте наложим ограничение на то, что я не могу преобразовать свои данные. я ожидал бы, что я мог бы сделать что-то вроде этого:
ggplot(DF)+geom_point(aes(x = B, y = C)) + facet_grid({A %% 4}~.)
или
ggplot(DF)+geom_point(aes(x = B, y = C, group = A)) + facet_grid({A %% 4} ~ .)
или даже
ggplot(DF)+geom_point(aes(x = B, y = C)) + facet_grid(formula({A %% 4} ~.))
но все они возвращают ошибку
Error in layout_base(data, rows, drop = drop) :
At least one layer must contain all variables used for facetting
Может ли кто-нибудь lain to the way, который показывает, как работает ggplot2, почему эти попытки терпят неудачу и как я могу получить желаемые результаты без преобразования данных?