我有一张桌子,人们在一个小组中选择他们的伙伴。 看起来像这样:
df<- data.frame(group=c(1,1,1,2,2,2),
income=c(100,200,300,400,500,600),
chosen_group_member=c(2,3,1,3,1,2))
df
输出:
group income chosen_group_member
1 1 100 2
2 1 200 3
3 1 300 1
4 2 400 3
5 2 500 1
6 2 600 2
对于每个成员,我需要找到其伙伴的收入作为target_income
变量:
group income chosen_group_member target_income
1 1 100 2 200
2 1 200 3 300
3 1 300 1 100
4 2 400 3 600
5 2 500 1 400
6 2 600 2 500
用dplyr在R中有什么办法吗? 现在,我只有一个想法可以遍历每个组,并让每个组中的每个成员遍历所有成员以查找其收入,这肯定是错误的方式。
答案 0 :(得分:3)
df %>%
group_by(group) %>%
mutate(target = income[chosen_group_member]) %>%
ungroup()