根据R中的多个条件填充列

时间:2017-10-16 23:35:36

标签: r dataframe conditional

为此使用虚拟数据,我有两个数据框:

一个是按性别划分的测量的位置及其排名列表(df1)

  Locations Male Female
1         A    1      2
2         B    2      1
3         C    1      2

另一个是人员列表

   Name Gender Location
1   Joe   Male        A
2  Alex Female        B
3 Chris Female        A
4   Sam   Male        C

我想在第二个数据框(df2 $ Value)中添加一列,根据其性别和位置为第一个数据框中的每个人提供相应的数字。 (所以在这种情况下,结果将是1,1,2,1)。

我尝试过使用合并和一些条件陈述,但无济于事。

1 个答案:

答案 0 :(得分:4)

将df1转换为具有匹配名称的堆叠格式:

df1 <- df1 %>% gather(Gender, Value, Male:Female)
names(df1)[names(df1)=="Locations"] <- "Location"

使用left_joinValueGenderLocation匹配:

df2 %>% left_join(df1)

#    Name Gender Location Value
# 1   Joe   Male        A     1
# 2  Alex Female        B     1
# 3 Chris Female        A     2
# 4   Sam   Male        C     1