[英]Filling a column based on multiple conditions in 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 $ Value)中添加一列,该列根据其性别和位置为第一个数据框中的每个人提供相应的编号。 (因此,在这种情况下,结果将是1,1,2,1)。
我试过合并和一些条件语句,但无济于事。
将df1转换为具有匹配名称的堆叠格式:
df1 <- df1 %>% gather(Gender, Value, Male:Female)
names(df1)[names(df1)=="Locations"] <- "Location"
使用left_join
通过Gender
和Location
匹配Value
:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.