首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sqldf更新错误

sqldf更新错误
EN

Stack Overflow用户
提问于 2016-12-20 07:53:06
回答 1查看 3K关注 0票数 1

我有两个数据集,就像

代码语言:javascript
复制
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和Dataset1.Date上的Mac列上匹配),Match应该在Dataset2.Start_Date & Dataset.End_Date之间,以获得列Cons。所以理想情况下,我的结果应该是

代码语言:javascript
复制
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上使用了一个简单的代码

代码语言:javascript
复制
sqldf2 <- sqldf("update dataset1
            set dataset1.Cons = dataset2.Cons
            FROM dataset1 INNER JOIN dataset2
            ON dataset1.Mac = dataset2.Mac") 

但它给了我一个错误

Rsqlite_send_query中的错误(conn@ptr,语句):近“。”:语法错误

为了更进一步,我计划使用这样的东西,这肯定是不对的,请也帮忙。

代码语言:javascript
复制
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)")

我很感激你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-20 08:36:59

我们可以使用左联接:

代码语言:javascript
复制
# 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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41237299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档