Вычислите среднее значение в группах таблиц (возможно, используя anova?) - PullRequest
0 голосов
/ 05 ноября 2011

Я работаю над проектом, который ищет связь между семейным доходом и количеством детей. Для простоты предположим, что у меня есть такие данные:

df <- data.frame(children = sample(0:9, 100, replace=TRUE),
                 income = floor(rnorm(100, 30000, 10000)))

Я делю доход на четыре группы по 1-му, среднему, 3-му квантилям:

income.br <- with(df, c(-Inf, stats(income)[5], stats(income)[6],
                  stats(income)[7], Inf))

и сохранить в виде таблицы:

x <- with(df, table(children, cut(income, breaks = income.br)))

Сейчас мне нужно подсчитать mean количество детей в каждой группе доходов. Вот что я сделал:

apply(x * as.numeric(levels(factor(df$children))), 2, sum) / apply(x, 2, sum)

Это выглядит неуклюже, поэтому я подумал, есть ли лучший способ сделать это (например, в одну сторону anova может быть?) Спасибо!

1 Ответ

2 голосов
/ 05 ноября 2011

Вероятно, это то, что вы хотите:

> with(df, tapply(children, cut(income, c(-Inf, quantile(income)[2:4], Inf)), mean))
    (-Inf,2.35e+04] (2.35e+04,2.96e+04] (2.96e+04,3.82e+04]     (3.82e+04, Inf] 
               5.32                4.40                4.36                3.84 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...