Почему y
заканчивается как character
класс? Похоже, это никогда не должно происходить от sqldf
SUM?Почему эта команда GROUP BY и NA генерирует символ?
library(sqldf)
# three very similar data.frame objects
x <- structure(list(size = c(1L, 2L), diff = c(1, NA)) , .Names = c("gb","diff"), row.names = 1:2, class = "data.frame")
y <- structure(list(size = c(1L, 1L, 2L, 2L), diff = c(NA, NA, 1, NA)) , .Names = c("gb","diff"), row.names = 1:4, class = "data.frame")
z <- structure(list(size = c(2L, 2L, 1L, 1L), diff = c(NA, NA, 1, NA)) , .Names = c("gb","diff"), row.names = 1:4, class = "data.frame")
# when summed in sqldf: numeric, character, numeric
sapply(sqldf("select sum(diff) from x"),class)
sapply(sqldf("select sum(diff) , gb from y group by gb"),class)[1]
sapply(sqldf("select sum(diff) , gb from z group by gb"),class)[1]
# this despite both being numeric originally
class(x$diff)
class(y$diff)
Если удалить, что 'сумма()' и оставить только 'diff' результатов, как и ожидалось (как цифровая). Я не знаю sql и так суммарно. В R 'sum' является общей функцией для суммирования элементов. Возможно, команды R внутри 'sqldf' функций должны быть помещены в специальную функцию или что-то еще? – SabDeM
Я думаю, что это применимо: sqldf FAQ 14: https://github.com/ggrothendieck/sqldf#14-how-does-one-read-files-where-numeric-nas-are-represented-as-missing-empty- поля –
@BondedDust спасибо! это, вероятно, часть проблемы. я представил слегка уточненную проблему, но я должен просто написать обход :) https://github.com/ggrothendieck/sqldf/issues/2 –