我正在尝试使用collect()
中的dplyr
函数在SQLite中查询表(comp_fleet
)。以下代码有效:
Cposns <- tbl(db_con,"comp_fleet") %>%
arrange(mmsi, desc(timestamp))%>%
dplyr::filter(!is.na(lat)) %>% collect()
但是,当我尝试top_n()
时,我得到一个错误:
Cposns <- tbl(db_con,"comp_fleet") %>%
arrange(mmsi, desc(timestamp))%>%
dplyr::filter(!is.na(lat)) %>%
top_n(1,timestamp) %>% collect()
Error: Window function `rank()` is not supported by this database
由于这是一个巨大的表,我希望在收集之前执行数据库中的所有聚合功能。在top_n()
之前是否有使用collect()
函数的方法?或等同的东西?
答案 0 :(得分:0)
感谢@Scarabee,这是有效的方法:
Cposns <- tbl(db_con,"comp_fleet") %>%
arrange(mmsi, desc(timestamp))%>%
dplyr::filter(!is.na(lat)) %>% group_by(mmsi) %>%
do(head(., n = 1)) %>% collect()