NA des valeurs à l'aide sqldf

Si j'essaie d'avoir une moyenne de c(NA, NA, 3, 4, 5, 6, 7, 8, 9, 10) à l'aide de AVG à partir de SQL, j'obtiens une valeur de 5,2, à la place de l'6.5.

# prepare data and write to file
write.table(data.frame(col1 = c(NA, NA, 3:10)),
        "my.na.txt", row.names = FALSE)

mean(c(NA, NA, 3:10), na.rm = TRUE) # 6.5

my.na <- read.csv.sql("my.na.txt", sep = " ",
        sql = "SELECT AVG(col1) FROM file") # 5.2

# this is identical to
sum(3:10)/10

unlink("my.na.txt") # remove file

Qui m'amène à croire que sql(df) traite NA les valeurs à zéro. Est-il possible d'ignorer (exclure) NA les valeurs dans un appel SQL, car il peut être fait en utilisant na.rm argument (dans R)?

?sqldf dit: "Le dbWriteTable/sqliteImportFile routines qui sqldf utilise pour transférer des fichiers de la base de données sont conçus pour la vitesse et ils ne sont pas aussi flexibles que read.table." Mais peut-être pas la solution idéale, le filter argument de read.csv.sql peut être utilisé pour filtrer les NA lignes avant qu'ils sont lus dans SQLite. Il y a quelques exemples de la filter argument en ?sqldf et sur la sqldf page d'accueil: sqldf.googlecode.com .

OriginalL'auteur Roman Luštrik | 2012-01-14