Я хотел бы создать основной «Идентификатор домохозяйства» для групп, в которых в каждом домохозяйстве одни и те же люди.Например, скажем, у меня есть набор данных с 4 людьми, которые находятся в семи разных домохозяйствах.
dt <- read.table(header=T, text='
p_id hh_id
1 100
2 100
3 100
1 200
2 200
3 200
1 300
2 300
3 300
4 300
2 400
3 400
2 500
3 500
4 500
2 600
3 600
2 700
3 700
4 700
')
Я хотел бы создать основной идентификатор домохозяйства, в котором бы идентифицировались домохозяйства с одинаковым идентификатором, исходя из того, кто именно был в домохозяйстве.
p_id hh_id master_id
1 100 1
2 100 1
3 100 1
1 200 1
2 200 1
3 200 1
1 300 2
2 300 2
3 300 2
4 300 2
2 400 3
3 400 3
2 500 4
3 500 4
4 500 4
2 600 3
3 600 3
2 700 4
3 700 4
4 700 4
БОНУС: Какой наилучший способ добавить вес в этот расчет идентификатора на основе некоторых критериев, например, было ли большинство «первичных» людей в других домохозяйствах?Например, если человек 1 и 2 - взрослые, а 3 и 4 - дети, как мы можем удержать мастера master_id
, когда 1 и 2 вместе, но отличаются, когда один из них отсутствует?
p_id hh_id master_id wt_m_id
1 100 1 1
2 100 1 1
3 100 1 1
1 200 1 1
2 200 1 1
3 200 1 1
1 300 2 1
2 300 2 1
3 300 2 1
4 300 2 1
2 400 3 2
3 400 3 2
2 500 4 2
3 500 4 2
4 500 4 2
2 600 3 2
3 600 3 2
2 700 4 2
3 700 4 2
4 700 4 2
Я попробовал следующий код, но он только создавал последовательные числа или пытался получить что-то совершенно другое.
dt %>% mutate(new_id = interaction(p_id, hh_id))
и
dt %>% mutate(ID = group_indices_(dt, .dots=c("p_id", "hh_id")))