Выберите строки с логическим ИСТИНА, используя sqldf - PullRequest
0 голосов
/ 11 июня 2018

Я использую это:

NewDf <- sqldf("select * from OldDf where Test = 'TRUE'")

, но я получаю ноль строк в NewDf .Определенно есть строки с TRUE в OldDf ( Test логический столбец со значениями: TRUE и FALSE ).

Есть идеи?

PS: Это работает:

NewDf  <- subset(OldDf, Test != 'FALSE')

1 Ответ

0 голосов
/ 11 июня 2018

sqldf хранит логики как 0 и 1 целые числа, см. Этот пример:

# dummy data
OldDf <- head(mtcars[, 1:2])
OldDf$Test <- c(TRUE, FALSE)
OldDf
#                    mpg cyl  Test
# Mazda RX4         21.0   6  TRUE
# Mazda RX4 Wag     21.0   6 FALSE
# Datsun 710        22.8   4  TRUE
# Hornet 4 Drive    21.4   6 FALSE
# Hornet Sportabout 18.7   8  TRUE
# Valiant           18.1   6 FALSE

library(sqldf)

sqldf("select * from OldDf where Test = 1")
#    mpg cyl Test
# 1 21.0   6 TRUE
# 2 22.8   4 TRUE
# 3 18.7   8 TRUE

# This also works, to filter on TRUE
sqldf("select * from OldDf where Test")
#    mpg cyl Test
# 1 21.0   6 TRUE
# 2 22.8   4 TRUE
# 3 18.7   8 TRUE

# To get FALSE
sqldf("select * from OldDf where NOT Test")
#    mpg cyl  Test
# 1 21.0   6 FALSE
# 2 21.4   6 FALSE
# 3 18.1   6 FALSE
...