2017-01-02 3 views
-3

Rで作成したデータフレームでsqldfを使用しようとしています。私のテーブルには2列の論理ベクトルがあります。私のコードはsqldf("Select* from df where Dupe1='TRUE' or Dupe2='TRUE' '')のようです。エラー:予期しない数値定数を返します。これが何を意味するのか理解していない。私はSQLはRの論理ベクトルを読み取ることができないと仮定します。どんな解決策も大いに評価されるでしょう。sqldfはRの論理ベクトルを読み取ることができません

+0

と値がTrue *と*偽*を*任意のSQL準拠のデータベースは、文字列リテラルとして想定されるために引用されることはありません。 – Parfait

答えて

1

どのようにコピーされたのかもしれませんが、あなたの質問では、SQL文は2重引用符で終わり、二重引用符では終わりません。しかし、大きな問題は、TRUEとFALSEが文字列として格納されていないことです。 TRUEは1として格納されます。FALSEは0として格納されます。したがって、以下のコードは必要な処理を行います。行番号を追加して、どの行が選択されたかを確認できるようにしました。 Rで

library(sqldf) 

## Create test data 
RowNum = 1:20 
Dupe1 = runif(20) > 0.5 
Dupe2 = runif(20) > 0.5 
df = data.frame(RowNum, Dupe1, Dupe2) 

sqldf("Select * from df where Dupe1=1 OR Dupe2=1") 

    RowNum Dupe1 Dupe2 
1  3 TRUE TRUE 
2  5 TRUE TRUE 
3  6 FALSE TRUE 
4  9 TRUE TRUE 
5  10 FALSE TRUE 
6  13 FALSE TRUE 
7  14 TRUE TRUE 
8  15 FALSE TRUE 
9  17 FALSE TRUE 
10  18 FALSE TRUE 
11  20 FALSE TRUE 
+1

または 'sqldf(" Select * from df Dupe1 OR Dupe2 ")' –

関連する問題