我在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]
答案 0 :(得分:2)
您可以使用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"))
希望这会有所帮助。