У меня есть отметка о 65524 наблюдениях, где одна переменная является идентификатором для домохозяйства, а другая является фактором, где присваивается значение 1
, если возраст человека в домохозяйстве составляет менее 15 лет,2
назначается, если возраст составляет от 15 до 64 лет, и 3
назначается, если возраст человека составляет 65 лет или старше.Таблетка выглядит следующим образом
> head(df, 15)
# A tibble: 15 x 2
hh.id age.cat
<dbl> <dbl+lbl>
1 11009 2
2 11009 2
3 11009 2
4 11009 2
5 11009 2
6 11009 1
7 11009 1
8 11009 1
9 11018 2
10 11018 1
11 11018 1
12 11018 1
13 11018 1
14 11018 2
15 11018 2
Мне нужно создать переменную для оценки коэффициента зависимости каждого домохозяйства.Что-то похожее на это
> head(df, 15)
# A tibble: 15 x 3
hh.id age.cat dep.ratio
<dbl> <dbl+lbl><dbl>
1 11009 2 0.60
2 11009 2 0.60
3 11009 2 0.60
4 11009 2 0.60
5 11009 2 0.60
6 11009 1 0.60
7 11009 1 0.60
8 11009 1 0.60
9 11018 2 1.25
10 11018 1 1.25
11 11018 1 1.25
12 11018 1 1.25
13 11018 1 1.25
14 11018 2 1.25
15 11018 2 1.25
Я думал, что использование dplyr::mutate
и dplyr::group_by
будет работать
df <- df %>%
dplyr::group_by(hh.id) %>%
dplyr::mutate(dep.ratio = (length(which(df$age.cat == 1)) + length(which(df$age.cat == 3)))/length(which(df$age.cat == 2)))
Однако я не получаю оценки для каждой группы (то есть для каждой), но я получаю общий коэффициент зависимости для всей выборки, повторяемый для каждого наблюдения.
# A tibble: 15 x 3
# Groups: hh.id [2]
hh.id age.cat dep.ratio
<dbl> <dbl+lbl> <dbl>
1 11009 2 1.02
2 11009 2 1.02
3 11009 2 1.02
4 11009 2 1.02
5 11009 2 1.02
6 11009 1 1.02
7 11009 1 1.02
8 11009 1 1.02
9 11018 2 1.02
10 11018 1 1.02
11 11018 1 1.02
12 11018 1 1.02
13 11018 1 1.02
14 11018 2 1.02
15 11018 2 1.02
Затем я подумал об использовании tapply
, но я не мог написать функцию, которая обуславливает значенияhh.id
.Наконец, я также попробовал aggregate
, но безуспешно.
Любые предложения приветствуются.
Спасибо
Маноло