У меня есть фрейм данных с числовой переменной и факторной переменной, например:
set.seed(123)
df <- data.frame(
numbers = c(rnorm(50, 3), runif(50)),
levels = sample(LETTERS[1:5], 100, replace = T)
)
Я хотел бы сделать полосовую диаграмму, которая отображает df$numbers
против df$levels
и вставляет вертикальные отрезки, представляющие среднее значение для каждого уровня.
stripchart(df$numbers ~ df$levels, method = "jitter")
Очевидно, я мог бы вставить строку средств для каждого уровня отдельно, например:
segments(x0 = mean(df$numbers[df$levels=="A"]), y0 = 1-0.3, y1 = 1+0.3, col = "red" )
И так далее для всех других уровней, что утомительно, если у вас несколько уровней. Итак, я попробовал этот цикл for
:
for(i in seq(unique(df$levels))){
segments(x0 = mean(df$numbers[df$levels==i]),
y0 = i - 0.3,
y1 = i + 0.3,
col = "red", lty = 3, lwd = 2)
}
Но это ничего не печатает (и тоже не выдает ошибку). Какой самый простой и понятный код для вставки сегментов средних?