Давайте сделаем это шаг за шагом.Я надеюсь, что это будет полезно для вас.
Сначала давайте посмотрим, каков результат использования метода aggregate
:
Group.1 D1 D2 D3
1 A 5.000000 6.000000 5.666667
2 B 2.666667 1.666667 2.666667
Затем ваш вызов plot
включает dta.mean[1,2:4]
так что выбирается строка 1 и столбцы с 2 по 4 для построения графика (в виде фрейма данных):
D1 D2 D3
1 5 6 5.666667
Обратите внимание, что это включает только группу «A» (строка 1) и 3 числовые переменные (для D1, D2 и D3).
Когда вы звоните plot
на фрейм данных, вы получите матрицу рассеивания, как вы указали в своем вопросе.Это показывает 6 диаграмм рассеяния (D1 против D2, D2 против D1, D1 против D3, D3 против D1, D2 против D3, D3 против D2).Каждый из этих 6 участков имеет только одну точку.Например, D1 против D2 - это D1 = 5, D2 = 6.
Вот подход, который я бы выбрал:
Сначала я бы melt
data (reshape2
package):
library(reshape2)
dta.m <- melt(dta[-1], id = "Treatment")
Treatment variable value
1 A D1 4
2 A D1 6
3 A D1 5
4 B D1 2
5 B D1 3
6 B D1 3
7 A D2 5
8 A D2 6
...
Это помещает ваши данные в длинный формат (в отличие от широкого): variable
теперь это D1, D2 или D3, а value
включаетзначение для этих переменных.Это очень полезно и аккуратно для ggplot
.
Далее я бы aggregate
:
dta.mean = aggregate(value~Treatment+variable, dta.m, mean)
Что должно дать вам это для построения:
Treatment variable value
1 A D1 5.000000
2 B D1 2.666667
3 A D2 6.000000
4 B D2 1.666667
5 A D3 5.666667
6 B D3 2.666667
Использование ggplot2
:
library(ggplot2)
ggplot(dta.mean, aes(x = variable, y = value, group = Treatment, col = Treatment)) +
geom_line()

Для создания панелей ошибок вам нужно будет снова объединить данные (аналогично тому, что было сделано для средств) ивозможно используйте geom_errorbar
.
Надеюсь, это будет полезно для вас.