首页 > 解决方案 > 从 R 中的 SQLite 中的表中收集()

问题描述

我正在尝试使用collect()函数 fromdplyr来查询comp_fleetSQLite 中的表 ()。以下代码有效:

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()?或者等价的东西?

标签: rsqlitedplyrrsqlitedbplyr

解决方案


感谢@Scarabee,这是有效的:

Cposns <- tbl(db_con,"comp_fleet") %>%
  arrange(mmsi, desc(timestamp))%>%
  dplyr::filter(!is.na(lat)) %>% group_by(mmsi) %>%
  do(head(., n = 1)) %>% collect()

推荐阅读