从R

时间:2018-07-10 11:45:03

标签: r sqlite dplyr rsqlite dbplyr

我正在尝试使用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()函数的方法?或等同的东西?

1 个答案:

答案 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()