首页 > 解决方案 > 如何根据另一个向量的值改变一个向量的值?

问题描述

data1 <- data.frame(abb = c("ap","be","pi","straw","sun","straw","pen"), gdp = c(20,30,40,50,60,70,80))
data2 <- data.frame(abb = c("ap","be","pi","straw","sun"),
                    fullname = c("apple","bear","pine","strawberry","sunny")) 

我想替换data1$abbdata2$fullname.

我尝试使用以下代码来实现它,但我收到一条警告消息:

find1 <- paste(data2$abb, collapse = "|")
data1$abb[str_detect(data1$abb, find1)]<- data2$fullname

我怎样才能意识到它?

标签: r

解决方案


一个选项data.table

library(data.table)
setDT(data1)[data2, abb:= fullname, on = .(abb)]

-输出

data1
#          abb gdp
#1:      apple  20
#2:       bear  30
#3:       pine  40
#4: strawberry  50
#5:      sunny  60
#6: strawberry  70
#7:        pen  80

推荐阅读