为两个条件分配值

时间:2016-05-17 13:55:28

标签: r dataframe conditional

我有两个data.frames这样:

DF1:

 col1 col2 col3
 1     2     20
 2     4     30
 3     4     25

DF2:

 colX colY colZ
  5     12     
  1     9      
  1     2     

现在我想在df2中为colZ指定值。当col1中的值等于colX且col2等于colY时,这必须是df1的col3中的数字

期望的输出:
    DF2:

 colX colY colZ
  5     12  NA  
  1     9   NA  
  1     2   20

我希望有人可以帮助我

1 个答案:

答案 0 :(得分:0)

使用具有足够铃声和口哨声的merge()功能可以获得您想要的结果。这里的诀窍是使用by.x=c(...)by.y=c(...)来指定合并期间要加入的多个列。还有一些按摩可以根据需要在所需的输出中获取列名。

result <- merge(df1, df2, by.x=c("col1", "col2"), by.y=c("colX", "colY"), all.y=TRUE)[, 1:3]
names(result) <- c("colX", "colY", "colZ")

> result
  colX colY colZ
1    1    2   20
2    1    9   NA
3    5   12   NA