2017-10-16 76 views
0

多个条件使用伪数据对这个列,我有两个数据帧:灌装基于R中

一个是位置的列表和他们的排名由性别(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 $值),从第一数据FRA给出了相应数量的每个人我根据他们的性别和地点。 (所以在这种情况下,结果将是1,1,2,1)。

我试着玩弄合并和一些条件声明,但无济于事。

+0

'DF2%>%突变(值= DF1 [匹配(Location,df1 $ Locations),Gender]%>%as.matrix%>%diag())' – OganM

回答

4

转换DF1成具有匹配名称的堆叠格式:

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

使用left_join以匹配Value通过GenderLocation

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