【发布时间】:2015-09-09 15:42:15
【问题描述】:
“任何 dplyr 不知道如何转换的函数都保持原样 - 这意味着如果你想使用数据库提供的任何其他函数,你可以按原样使用它。”
使用与小插图中相同的示例,航班数据集:
library(nycflights13)
my_db <- src_sqlite("my_db.sqlite3", create = T)
flights_sqlite <- copy_to(my_db, flights, temporary = FALSE, indexes = list(
c("year", "month", "day"), "carrier", "tailnum"))
我设法在 tbl() 创建语句中使用了 count():
tbl(my_db, sql("SELECT count(*) FROM flights"))
但这显然只返回整个表的计数,而不是其他列,我如何在过滤操作后使用 SQL count()?
假设我要统计飞往檀香山的航班数量,并希望dplyr::explain() 返回相应的 SQL 查询。
tbl(my_db, "flights") %>% filter(dest == "HNL") %>% explain()
描述返回火奴鲁鲁航班所有数据的 SQL 语句。如何只计算这些航班?
【问题讨论】:
-
你想要的输出是什么?
-
如果你想要所有其他的列也许
tbl(my_db, sql("SELECT *, count(*) FROM flights"))? -
所需的输出是特定目的地的航班数量。真正需要的输出是实现此目的的 SQL 语句。