AVG
を使用して平均をc(NA, NA, 3, 4, 5, 6, 7, 8, 9, 10)
にしようとすると、予想される6.5ではなく5.2の値が得られます。sqldfを使用したNAの値
# 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
これは、sql(df)がNA値をゼロとして扱うと考えています。 na.rm
引数(R)を使用して実行できるので、SQL呼び出しでNA値を無視(除外)することはできますか?
は 'sqldf'言う:「sqldf'は、データ・ベースにファイルを転送するために使用する速度のために意図されていると、彼らはread.table''ほど柔軟ではありません 'dbWriteTable/sqliteImportFile'ルーチン'こと。」理想的な解決法ではないかもしれませんが、 'read'scs.sql'の' filter'引数は、 'NA'行をフィルタリングしてからSQLiteに読み込むために使用できます。 '?sqldf'とsqldfホームページ:http://sqldf.googlecode.comに' filter'引数の例がいくつかあります。 –