如何使用 sqldf R 包的 UPDATE 函数更新某些行?

问题描述 投票:0回答:1

我有两个表:dat1和dat2。

names(dat1):
id, filename, kd_estimated, kd_95CI_low, kd_95CI_upp, start_time, end_time, max_response, min_response   , RMSE, resp_95CI_low, resp_95CI_upp



  names(dat2) = names(dat1)

数据看起来像下面。

1, A1_a1H12.xls.txt, 0.00172, 0.0017, 0.00174, 450, 600, 0.267, 0.204, 0.00256, 0.229, 0.229

我想在文件名相同的情况下用dat2更新dat1。下面是我的代码。

mydata_up <- sqldf(c("UPDATE dat1 SET kd_estimated = dat2.kd_estimated FROM dat2 WHERE dat2.filename = dat1.filename", "SELECT * FROM dat1"))

然而,我总是得到以下错误:

"错误:在 "FROM "附近:语法错误"

没有头绪 :-( 谢谢你的帮助。

sql r sqlite sql-update sqldf
1个回答
1
投票

在许多数据库中,你可以使用一个相关的子查询来处理这个问题。

UPDATE dat1 SET kd_estimated = (
    SELECT dat2.kd_estimated 
    FROM dat2 
    WHERE dat2.filename = dat1.filename
)

如果有遗漏的匹配信息 dat2那么,

UPDATE dat1 SET kd_estimated = (
    SELECT dat2.kd_estimated 
    FROM dat2 
    WHERE dat2.filename = dat1.filename
)
WHERE EXISTS (
    SELECT 1
    FROM dat2 
    WHERE dat2.filename = dat1.filename
)
© www.soinside.com 2019 - 2024. All rights reserved.