根据后续行中的向量匹配分配标志

时间:2018-01-17 02:41:06

标签: r matching

我有一个数据框,其中包含一个捕鱼许可证持有者数据库,我与登记船主的数据库合并,以便拥有登记船只的捕鱼许可证持有人拥有“BoatOwner”标志= 1。合并数据库有一个“HouseholdID”,即居住在同一房屋内的人被分配相同的唯一号码。在拥有注册船只的家庭中,只有船舶正式登记的人被标记为船主。如何将家中的后续人员分配为船主?我已经通过“HouseholdID”和“BoatOwner”对我的数据库进行了分类,以便家庭中的船主首先列在每个独特的家庭中。我不知道如何在后续行中找到矢量匹配,然后如果匹配,则将标志(0或1)分配给“BoatOwner”。

有没有人有任何想法让我开始?

1 个答案:

答案 0 :(得分:0)

我在下面做了一个例子,将来很好的想法是使用dput()放一小部分数据。

您可以使用dplyr的group_by对HouseholdID进行分组,然后找到BoatOwners的最大值并使用mutate将其分配给自己(或创建一个额外的列)。

请注意,此方法并不要求数据按任何特定顺序排序

library(dplyr)
dat <- data.frame(HouseholdID = rep(1:5,each = 3), BoatOwner = c(rep(0,6),1,0,0,1,rep(0,5))) 
dat <- dat %>% group_by(HouseholdID) %>% mutate(BoatOwner = max(BoatOwner))