【发布时间】:2020-08-30 10:14:13
【问题描述】:
我有两个表: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”:语法错误”
没有线索:-(谢谢你的帮助。
【问题讨论】:
-
嗨 Sophia,请选择代码部分然后点击“{}”这个标志。这将转换灰色区域的代码部分,以便每个人都可以理解哪些行是代码,哪些是文本。谢谢
-
请用您正在运行的数据库标记您的问题:mysql、oracle、postgresql...?
-
另一种简单的方法:突出显示代码并按
Ctrl-K,同样的事情。 stackoverflow.com/editing-help 提供有关如何格式化的帮助,虽然这听起来很琐碎,但一个格式良好的问题使得将文本与代码与来自文本的数据区分开来……变得更加简单,并将代码格式化为固定宽度,这可能是多少(大多数?所有?idk)IDE 提供代码编辑。让它吸引眼球,让人们更容易看久一点,可能会解决你的问题。 -
@GMB,是
sqldf,是一个后台使用SQLite引擎的R包。我通常认为sqldf 就足够了,因为在sqldf上下文中存在逻辑上不适用的SQLite 事物。 -
Sophia,鉴于您在 R 中使用 SQL 语法,因此明确命名法很重要。 R 没有“表格”,所以我假设
dat1和dat2是数据帧。请提供一个最小的可重现示例 (stackoverflow.com/help/minimal-reproducible-example),并向我们展示您的预期输出。 “当文件名相同时,用 dat2 更新 dat1”是什么意思?你的意思是相当于if (dat1[1,2] == dat2[1,2]) dat1 <- dat2?
标签: sql r sqlite sql-update sqldf