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,匹配);这能回答你的问题吗?这回答了你的问题吗?