2016-12-20 6 views
1

私は2つのデータセット、そう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データからの結果セットは、あるマッチのMac DATASET2の列と[Dataset1.Date]の間であるべきで[Dataset2.Start_Date] & [Dataset.End_Date]をクリックして、列の長所を取得します。だから、理想的には私の結果は、私が開始するには、sqldfを使用しながら、Rでそれを達成しようとしています

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

ようになるはずです、私は、Mac上の1つの簡単なコードだけ

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

を使用しますが、それは私にエラーを与えましたI nは間違いなく、このようなものを、使用することを計画していますさらにに関して

Error in rsqlite_send_query([email protected], 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)") 

私はすべての助けに感謝します!私たちは、左使用することができます

答えて

2

が参加:

# 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" に "インデックス" に変更しました。

+0

ありがとうございます。私がコードを共有しているので、sqldfでのアップデートを使用している間に私が間違ったことを指示してください。 –

+1

@manusharmaを参照してください[この記事](http://stackoverflow.com/questions/773441): "SQLiteはUPDATEステートメントのJOINをサポートしていません" – zx8754