我在R中有2个数据帧
DF1
是
ColA ColB observation
123 Text1 45
234 Text2 65
345 Text3 78
DF2
是
ColumnA ColumnB metric
123 Text1 7
123 Text2 65
345 Text1 102
我想将observation
的{{1}}列替换为DF1
的{{1}}列的值,但只对与{{1 }} = {metric
和DF2
= ColA
。上面的示例将输出以下数据帧:
ColumnA
答案 0 :(得分:1)
这是使用merge
+ ifelse
DF <- within(merge(DF1,DF2,by.x = c("ColA","ColB"),by.y = c("ColumnA","ColumnB"),all.x = TRUE),
value <- ifelse(is.na(metric),observation,metric))[-(3:4)]
这样
> DF
ColA ColB value
1 123 Text1 7
2 234 Text2 65
3 345 Text3 78
答案 1 :(得分:0)
使用dplyr
的解决方案:
由于您没有提供minimal reproducible example,所以我无法测试代码...
library(dplyr)
DF1 %>%
left_join(DF2, by=("ColA"="ColumnA", "ColB"="ColumnB") %>%
mutate(value = if_else(!is.na(metric), metric, observation)