2017-01-02 1 views
-3

R로 작성된 데이터 프레임과 함께 sqldf를 사용하려고합니다. 내 테이블에 2 개의 논리 벡터 열이 있습니다. 내 코드는 sqldf("Select* from df where Dupe1='TRUE' or Dupe2='TRUE' '')입니다. Error : 예기치 않은 숫자 상수를 반환합니다. 이것이 무엇을 의미하는지 이해하지 마십시오. SQL은 R의 논리 벡터를 읽을 수 없다고 가정합니다. 모든 솔루션을 크게 주시면 감사하겠습니다.sqldf가 R에서 논리 벡터를 읽을 수 없습니다.

+0

R 및 SQL 호환 데이터베이스에서 * True * 및 * False * 값은 문자열 상수로 간주되지 않습니다. – Parfait

답변

1

일이 어떻게 복사되었는지는 모르지만 질문에 SQL 문은 큰 따옴표가 아니라 두 개의 작은 따옴표로 끝납니다. 그러나 큰 문제는 TRUE와 FALSE가 문자열로 저장되지 않는다는 것입니다. TRUE는 1로 저장됩니다. FALSE는 0으로 저장됩니다. 아래 코드는 원하는대로 처리합니다. 어떤 행이 선택되었는지 확인할 수 있도록 행 번호를 추가했습니다.

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")' –

관련 문제