а как же:
> swiss$qEdu <- cut (swiss$Education,
breaks = quantile (swiss$Education, c (0, .25, .5, .75, 1)),
include.lowest = TRUE)
> aggregate (swiss$Infant.Mortality, list (qEdu = swiss$qEdu), FUN = mean)
qEdu x
1 [1,6] 19.31429
2 (6,8] 21.93636
3 (8,12] 19.38182
4 (12,53] 19.30909
(я не знаю, какие у вас цифры - они не совпадают со средними, которые я получаю)
(Это было до редактирования ...)
(после 2-го редактирования :)
Если вы хотите, чтобы Infant.Mortality для каждой из провинций принадлежал этому квартилю Eduction, используйте list ()
в качестве функции агрегации:
> aggregate (swiss$Infant.Mortality, list (qEdu = swiss$qEdu), FUN = list)
qEdu x
1 [1,6] 20.2, 24.5, 18.7, 21.2, 22.4, 15.3, 21.0, 18.0, 15.1, 19.8, 18.3, 19.4, 20.2, 16.3
2 (6,8] 20.3, 26.6, 23.6, 24.9, 21.0, 19.1, 20.0, 23.8, 22.5, 20.0, 19.5
3 (8,12] 22.2, 22.2, 16.5, 22.7, 20.0, 18.0, 16.7, 16.3, 17.8, 20.3, 20.5
4 (12,53] 20.6, 24.4, 20.2, 10.8, 20.9, 18.1, 18.9, 23.0, 18.0, 18.2, 19.3
или
> Infant.Mortality <- lapply (levels (swiss$qEdu), function (x) swiss$Infant.Mortality [swiss$qEdu == x])
> names (Infant.Mortality) <- levels (swiss$qEdu)
> Infant.Mortality
$`[1,6]`
[1] 20.2 24.5 18.7 21.2 22.4 15.3 21.0 18.0 15.1 19.8 18.3 19.4 20.2 16.3
$`(6,8]`
[1] 20.3 26.6 23.6 24.9 21.0 19.1 20.0 23.8 22.5 20.0 19.5
$`(8,12]`
[1] 22.2 22.2 16.5 22.7 20.0 18.0 16.7 16.3 17.8 20.3 20.5
$`(12,53]`
[1] 20.6 24.4 20.2 10.8 20.9 18.1 18.9 23.0 18.0 18.2 19.3