r - 如何根据另一个向量的值改变一个向量的值?
问题描述
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$abb
为data2$fullname
.
我尝试使用以下代码来实现它,但我收到一条警告消息:
find1 <- paste(data2$abb, collapse = "|")
data1$abb[str_detect(data1$abb, find1)]<- data2$fullname
我怎样才能意识到它?
解决方案
一个选项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
推荐阅读
- scala - 使用Scala的List Accumulator上的foldLeft,foldRight差异
- r - 如何将非数值变量列转换为两个数值变量列?
- python - 在熊猫中查找每两列值的 prc 变化
- spring - 如何将 JSP 视图存储在类路径而不是 webapp 中?
- android - Google Play 应用审核陷入家庭政策要求和不准确受众之间
- mysql - 不同出行方式的 GPS 点数
- javascript - 获取嵌入式 Tableau 仪表板的窗口高度
- php - 如何通过 PHP 的缩短 URL 找到一系列重定向后的最后一个(最终)URL
- postgresql - postgres中具有Hamming差异的唯一约束
- html - NVDA 不读取 Firefox 导航中的链接或标题属性,或屏幕阅读器文本