Чтобы получить плотности, проще всего использовать петлю tapply
.
dens <- tapply(dat$k_var, dat$char_var, density)
Теперь графики.Все эти плотности представлены на одном графике и должны рассматриваться только в качестве примера.
dx <- sapply(dens, function(d) range(d$x))
dy <- sapply(dens, function(d) range(d$y))
xlim <- c(min(dx[1, ]), max(dx[2, ]))
ylim <- c(min(dy[1, ]), max(dy[2, ]))
plot(0, type = "n", xlim = xlim, ylim = ylim, xlab = "", ylab = "")
for(i in seq_along(dens)){
par(new = TRUE)
plot(dens[[i]], main = "", col = i, xlab = "", xlim = xlim, ylim = ylim)
}
Код создания данных.
set.seed(1234)
dat <- data.frame(char_var = rep(LETTERS[1:4], each = 10),
k_var = rnorm(40))