【发布时间】:2020-11-11 22:37:28
【问题描述】:
在 R 中使用外部数据库时,我是初学者。
几个月前我已经问过如何将一个巨大的数据集导入 PostgreSqL 并得到了完美的答案。 所以我想我在这里再试一次。
有没有一种简单的方法可以在 R 中为外部数据绘制一些绘图、图表或箱线图?
这是我的代码:
- 首先我连接到数据库,进行连接并获取一些平均值,这很慢,但工作正常
- 问题在于最后一段代码,我想在其中绘制 xlab 上的年份和 ylab 上的价格。
db_tankdata <- 'tankdaten'
host_db <- 'localhost'
db_port <- '5432'
db_user <- 'postgres'
db_password <- 'xxx'
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, dbname = db_tankdata, host=host_db,
port=db_port, user=db_user, password=db_password)
#do a join with tables from database, filter a city
ms_stations_comb <- tbl(con, "prices") %>% left_join(tbl(con, "stations"), by = c("station_uuid" ="uuid")) %>% filter(str_detect(post_code, "^481"))
#get mean prices for different types of fuel
ms_stations_comb %>% summarize(mean_diesel = mean(diesel), mean_e5 = mean(e5), mean_e10 = mean(e10))
#do a plot with years on xlab and price on ylab
ms_stations_comb %>% dbplot_line(year(date), e5)
代码确实给了我一个错误提示:
错误:列“dbplyr_016.e5”必须在 GROUP-BY 子句中或出现在聚合函数中 第 1 行:选择“年(日期)”、“e5”
编辑:基本上我想在 xlab 上做一个多年的情节,在 y lab 上做一个价格。该数据集包含例如燃料价格 (e5) 和格式为“2018-04-13 23:17:06”的日期。
提前致谢!
【问题讨论】:
-
summarize应在使用group_by设置分组变量后使用。如果您在帖子中包含一些数据和期望的结果,人们可以提供更具体的建议。 -
顺便说一句:SQL 中没有
year()函数。 (它是 Sybase/Microsoft 扩展)
标签: r postgresql dbplyr