【发布时间】:2021-03-24 08:55:14
【问题描述】:
这是我通过 dbplyr 运行一些 SQL 查询的方式
library(tidyverse)
library(dbplyr)
library(DBI)
library(RPostgres)
library(bit64)
library(tidyr)
drv <- dbDriver('Postgres')
con <- dbConnect(drv,dbname='mydb',port=5432,user='postgres')
table1 <- tbl(con,'table1')
table2 <- tbl(con,'table2')
table3 <- tbl(con,'table3')
table1 %>% mutate(year=as.integer64(year)) %>% left_join(table2,by=c('id'='id')) %>%
left_join(table3,by=c('year'='year'))
我想删除一些行,其中包括 NA 然后 collect 我的决赛桌,但找不到任何有用的 dbplyr 查询。
我试图从tidyr 和其他一些基本函数(complete.cases() 等)中传递drop_na()。你能建议我什么来实现我的目标吗?也欢迎将 SQL 查询(如 WHERE FOO IS NOT NULL)传递到 dbplyr 查询。
提前致谢。
【问题讨论】:
-
na.omit(table)呢? -
@PaulG 嗨,
table指的是什么?如果您建议我在我的 dbplyr 查询结束时使用管道na.omit(),我尝试了这个,这是令人失望的地方之一。我想在收集之前省略 NA,因为它会在我的磁盘中创建一个巨大的临时文件。 -
table应该是一个数据框或小标题。你的结果表是什么类?也许先尝试转换它。 -
@PaulG 好吧,实际上还不是你所说的。这是一个惰性查询,分类为“tbl_lazy”、“tbl_sql”和“tbl”。问题从那里开始,我需要做任何我必须做的事情,然后才能将它变成数据框或小标题等。
-
SQL 查询 in this answer 似乎正在做你需要的事情。