r - sqldf更新错误

标签 r sqlite join sql-update sqldf

我有两个数据集,像

Datset1

Index  Mac Date         Cons
1      35  1432425600   Nil
2      35  1431993600   Nil
3      35  1433894400   Nil
4      35  1433376000   Nil

 Dataset2

Index  Mac Start_Date  End_Date       Cons
1      35  1432339200  1432771200     D1
2      35  1433116800  1435017600     D2


因此,我要寻找的是从Dataset1获得的结果集,该结果集在dataset2上的Mac上的Match列和[Dataset1.Date]应该在[Dataset2.Start_Date]和[Dataset.End_Date]之间,以获取Cons列。所以理想情况下,我的结果应类似于

Final Dataset
Index  Mac Date         Cons
1      35  1432425600   D1
2      35  1431993600   Nil
3      35  1433894400   D2
4      35  1433376000   D2


我正在尝试在使用sqldf的R中实现它,开始时,我仅在Mac上使用了1个简单的代码

sqldf2 <- sqldf("update dataset1
            set dataset1.Cons = dataset2.Cons
            FROM dataset1 INNER JOIN dataset2
            ON dataset1.Mac = dataset2.Mac") 


但这给了我一个错误


Error in rsqlite_send_query(conn@ptr, statement) : near ".": syntax error



为了进一步计划我打算使用类似这样的方法,这绝对不正确,请也提供帮助

sqldf2 <- sqldf("update dataset1
            set dataset1.Cons = dataset2.Cons
            FROM dataset1 INNER JOIN dataset2
            ON dataset1.Mac = dataset2.Mac 
            AND (dataset1.Date > dataset2.Start_Date & dataset1.Date<dataset2.End_Date)")


我感谢所有的帮助!

最佳答案

我们可以使用左连接:

# dummy data*
dataset1 <- read.table(text = "
rn  Mac Date         Cons
1      35  1432425600   Nil
2      35  1431993600   Nil
3      35  1433894400   Nil
4      35  1433376000   Nil", header = TRUE)

dataset2 <- read.table(text = "
rn  Mac Start_Date  End_Date       Cons
1      35  1432339200  1432771200     D1
2      35  1433116800  1435017600     D2", header = TRUE)

library(sqldf)

sqldf("select a.rn, a.Mac, a.Date, b.Cons
       from dataset1 a
       left join dataset2 b
       on a.Mac = b.Mac and
          a.Date >= b.Start_Date and
          a.Date <= b.End_Date")

#   rn Mac       Date Cons
# 1  1  35 1432425600   D1
# 2  2  35 1431993600 <NA>
# 3  3  35 1433894400   D2
# 4  4  35 1433376000   D2


注意:我将“索引”更改为“ rn”,否则将引发错误。

关于r - sqldf更新错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41237299/

相关文章:

基于一行删除多行

舍入到有效数字*仅* R 中数字的小数部分

ios - iOS5、iOS6 Unicode 上的全文搜索(俄语、日语、中文、韩语)

r - data.table 更新对非等价自联接的奇怪行为

mysql - 加入 : Incorrect result when SUM() is used and only one record is displayed

mysql - 验证 INNER JOIN 中的所有行都具有值

从 R 中的向量中删除某些元素

r - 从 aov 中提取 p 值

java - 创建表时代号一个 SQLite 错误

android - 查看 SQLite 数据库内容