Его не ясно, что подразумевается, но код, показанный имеет следующие проблемы:
Month
используется в данных, но month
используется в операторе SQL
SQLite не имеет даты или времени нет типов и поэтому, если вы отправите значение POSIXct в SQLite оно будет интерпретировано как число секунд с эпоху UNIX (в часовом поясе GMT). Таким образом, сравнение месяца с символьной строкой не будет работать. Вы можете преобразовать количество секунд в yy-mm-dd с помощью функций SQLite strftime
или date
. Альтернативно используйте базу данных, имеющую типы даты и времени. sqldf поддерживает базу данных H2 и поддерживает типы даты и времени.
Сводка пытается группироваться по Media
и sum(Total_Click)
. Группировка по агрегированной стоимости не является законной, хотя, возможно, это может быть сделано путем выбора вложенности в зависимости от того, что вы намеревались.
Поскольку оператор группировки по Media
expressoin count(distinct(Media)) from
All_Data
всегда будет 1, так как там может быть только один Media
в такой группе.
Вам нужно будет уточнить, что ваши намерения, но если мы отбросим или исправить различные точки мы можем получить это:
sqldf("select
Media,
sum(Total_Click) sum_Total_Click,
avg(Request_Row) avg_Request_Row,
min(Request_Row) min_Request_Row,
max(Request_Row) max_Request_Row
from All_Data
where Request_Row < 100
and date(month, 'unixepoch', 'localtime') = '2014-08-01'
group by 1 order by 2 desc")
, который дает:
Media sum_Total_Click avg_Request_Row min_Request_Row max_Request_Row
1 EEM 38 24 8 37
RH2 Чтобы использовать пакет RH2 и базу данных H2, убедитесь, что у вас установлены Java и RH2 (RH2 включает базу данных H2, так что не должны быть отдельно установлен), а затем:
library(RH2)
library(sqldf)
sqldf("...")
где ... заменяется той же инструкции SQL, за исключением сравнения дат упрощается до этой линии:
and month = '2014-08-01'
данных: Когда отправляя на тег SO R, пожалуйста, покажите свои данные с помощью dput
.В данном случае это было использовано:
All_Data <-
structure(list(Media = c("EEM", "EEM", "EEM", "EEM"), Month = structure(c(1406865600,
1406865600, 1406865600, 1406865600), class = c("POSIXct", "POSIXt"
), tzone = ""), Request_Row = c(8, 25, 26, 37), Total_Click = c(12,
9, 9, 8), Match_Type = c("S", "S", "S", "S")), .Names = c("Media",
"Month", "Request_Row", "Total_Click", "Match_Type"), row.names = c(NA,
-4L), class = "data.frame")
Обновления: Разных изменений.
действительно ли в файле excel месяц '2014-09-01'? – Alex
И обратите внимание, что 'month! = Month'. (R чувствителен к регистру, и вы можете подумать об исправлении заголовка вопроса, так как на данный момент он «просто уродлив».) –
Услышав ответа, я предполагаю, что написание является вопросом и проголосовать за закрытие в качестве простой опечатки. –