How to match and replace elements between two dataframes
df1<-data.frame(id=c(1,2,3,4), value=c(10,20,30,40))
df2<-data.frame(col1=c(1,2,3,4), col2=c(4,3,2,1))
df2[] <- lapply(df2, function(x) {
inds <- match(x, df1$id)
ifelse(is.na(inds),x, df1$value[inds])
})
df2
================================================
df <- data.frame(fruits = c("apple", "orange", "pineapple", "banana", "grape"), stringsAsFactors = FALSE)
df_rep <- data.frame(eng = c("apple", "orange", "grape"), esp = c("manzana", "naranja", "uva"), stringsAsFactors = FALSE)
df2 <- merge(df, df_rep, by.x = 'fruits', by.y = 'eng', all.x = TRUE)
df2$fruits <- ifelse(is.na(df2$esp), df2$fruits, df2$esp)
================================================
a <- data.frame(id=letters[1:4], age=c(18,NA,9,NA), sex=c("M","F","F","M"))
a
b <- data.frame(id=c("a","b","d"), age=c(18,32,20))
b
library(data.table)
setDT(a)[b, agei := i.age, on='id'][is.na(age), age := agei][,agei:= NULL][]
a
================================================
library(dplyr)
dt1 <- read.table(text = "
SAMPLE_ID CLASS_ID CLASS VALUE
1 0 0 5
2 0 0 5
3 0 0 3
4 0 0 6
5 0 0 6
6 0 0 3
", header = TRUE, stringsAsFactors = FALSE)
dt2 <- read.table(text = "
SAMPLE_ID REF_VAL CLASS_ID CLASS
1 33 2 cloud
2 45 3 water
3 NA 3 water
4 NA 4 forest
", header = TRUE, stringsAsFactors = FALSE)
dt3 <- read.table(text = "
SAMPLE_ID CLASS_ID CLASS STRATA
5 3 NA 20
6 3 water 19
", header = TRUE, stringsAsFactors = FALSE)
dt <- dt1[,c("SAMPLE_ID", "VALUE")]
dt <- left_join(dt, dplyr::bind_rows(dt2, dt3))
dt <- select(dt, SAMPLE_ID, CLASS_ID, CLASS, VALUE)
================================================
REF
https://stackoverflow.com/questions/51614901/r-conditional-replacement-using-two-data-frames
https://stackoverflow.com/questions/33954292/merge-two-data-frame-and-replace-the-na-value-in-r
https://stackoverflow.com/questions/29809512/replace-values-between-two-data-frames-in-r
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
2012-07-29 eclipse断点调试 出现Source not found
2012-07-29 Java Eclipse 如何导入外部Jar包
2010-07-29 SQL Server 2005脚本编辑窗口不能使用Enter,Backspace, Insert等按键