R 将值替换为其他数据帧作为引用

R 将值替换为其他数据帧作为引用,r,R,如果a1匹配,我试图用数据帧df1的值b1替换数据帧df1的列a1。请帮助我使用基本R函数实现此功能 df1 <- data.frame(a1 = c("b2","c2","abc2"),b1 = c("bb2","cc2","d2")) df2 <- data.frame(d1 = c("sale","sale2","sale3"),a1 = c("b2","c2","d2")) > df2 a1 b1 1 sale b2 2 sale2 c2 3 sale3

如果
a1
匹配,我试图用数据帧
df1
的值
b1
替换数据帧
df1
的列
a1
。请帮助我使用基本
R
函数实现此功能

df1 <- data.frame(a1 = c("b2","c2","abc2"),b1 = c("bb2","cc2","d2"))
df2 <- data.frame(d1 = c("sale","sale2","sale3"),a1 = c("b2","c2","d2"))

> df2
     a1 b1
1  sale b2
2 sale2 c2
3 sale3 d2

我个人喜欢将参考表添加到原始表中。例如,(使用
dplyr
)您可以执行以下操作:

df2 %>% left_join(df1, by = "a1") %>% mutate(new_b1 = ifelse(!is.na(b1), b1, a1))
df2 %>% left_join(df1, by = "a1") %>% 
  mutate(b1 = ifelse(!is.na(b1), b1, a1)) %>% 
  select(-a1) %>% 
  rename(a1 = d1)
导致

    d1 a1   b1 new_b1
1  sale b2  bb2    bb2
2 sale2 c2  cc2    cc2
3 sale3 d2 <NA>     d2
     a1  b1
1  sale bb2
2 sale2 cc2
3 sale3  d2
导致

    d1 a1   b1 new_b1
1  sale b2  bb2    bb2
2 sale2 c2  cc2    cc2
3 sale3 d2 <NA>     d2
     a1  b1
1  sale bb2
2 sale2 cc2
3 sale3  d2

我个人喜欢将参考表添加到原始表中。例如,(使用
dplyr
)您可以执行以下操作:

df2 %>% left_join(df1, by = "a1") %>% mutate(new_b1 = ifelse(!is.na(b1), b1, a1))
df2 %>% left_join(df1, by = "a1") %>% 
  mutate(b1 = ifelse(!is.na(b1), b1, a1)) %>% 
  select(-a1) %>% 
  rename(a1 = d1)
导致

    d1 a1   b1 new_b1
1  sale b2  bb2    bb2
2 sale2 c2  cc2    cc2
3 sale3 d2 <NA>     d2
     a1  b1
1  sale bb2
2 sale2 cc2
3 sale3  d2
导致

    d1 a1   b1 new_b1
1  sale b2  bb2    bb2
2 sale2 c2  cc2    cc2
3 sale3 d2 <NA>     d2
     a1  b1
1  sale bb2
2 sale2 cc2
3 sale3  d2

一种
基本R
可能性可能是:

pmax(df2$a1, df1$b1[match(df2$a1, df1$a1)], na.rm = TRUE)

[1] "bb2" "cc2" "d2"
它需要使用
stringsAsFactors=FALSE
导入数据

或:


ifelse(is.na(匹配),df2$a1,匹配);匹配一个
基本R
可能性可能是:

pmax(df2$a1, df1$b1[match(df2$a1, df1$a1)], na.rm = TRUE)

[1] "bb2" "cc2" "d2"
它需要使用
stringsAsFactors=FALSE
导入数据

或:


ifelse(is.na(匹配),df2$a1,匹配);这能回答你的问题吗?这回答了你的问题吗?