R中是否有一种方法可以从另一个数据帧更新一个数据帧?

我在R中有两个数据帧,我需要用另一个数据帧中的值更新一个数据帧中的值。我可以使用UPDATE在SQL中轻松地执行此操作,但是出于任何原因,R中的SQLite似乎都无法以相同的方式处理。

示例:

DF1 

col A   

xyz      
123

DF2 

col A   col B

xyz     abc
123     456

基于DF1的col A等于DF2的col A中的值,我想用DF2的col B中的值替换DF1中的colA。鉴于我是R语言的新手,这将是一个简单的UPDATE语句,但我无法在sqldf中使用该语法

这似乎可以满足我的需要-我只是对语法不熟悉:

DF1$colA <- DF2[match(DF1$colA,DF2$colB),2]
huhaohuhao7654 回答:R中是否有一种方法可以从另一个数据帧更新一个数据帧?

您可以使用ifelse检查是否相等,并用Col_B中的df2替换,否则按原样在Col_A中保留df1的值。方法如下:

df1$Col_A=ifelse(as.character(df1$Col_A) == as.character(df2$Col_A),as.character(df2$Col_B),as.character(df1$Col_A)
# df1
# Col_A
# 1   abc
# 2   456
# 3   567

数据

df1 <- data.frame(Col_A=c("xyz","123","567"))                                                                                                                                                                                                       
df2 <- data.frame(Col_A = c("xyz","123"),Col_B = c("abc","456"))

希望这会有所帮助。

本文链接:https://www.f2er.com/3098206.html

大家都在问