我的问题几乎相同正如这个 https://stackoverflow.com/questions/27597932/databse-connection-using-dplyr-with-date-field-in-databse。简而言之,我正在使用 dplyr (以及 RMySQL)导入带有日期时间列的 MySQL 表,并且我想将其转换为 R 中的日期。在上面链接的问题中,没有发布答案,只有 Hadley 的评论。 OP 显然根据评论找到了解决方案。我从 Hadley 的评论中了解到,我可以通过将日期列正确导入到 R 中来解决问题。然后就不需要使用 as.Date 了。但是,我找不到如何使用 dplyr 和 RMySQL 来做到这一点。
我不知道如何发布一个完全可重现的示例,因为它是一个 MySQL 数据库连接,但我将发布我的代码:
如果我尝试:
pedidos <- my_db %>%
tbl("pedidos") %>%
mutate(test = as.Date(DateSent))
然后我运行:
pedidos
R 返回:
FUNCTION AS.DATE does not exist
就像另一个问题中的OP一样,我可以使用collect()解决该问题,但它违背了不将数据复制到内存中的目的。这是有关 MySQL 中数据类型的一些信息
发送日期是日期时间
和 R sessionInfo():
R version 3.3.1 (2016-06-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
locale:
[1] LC_COLLATE=Portuguese_Brazil.1252
[2] LC_CTYPE=Portuguese_Brazil.1252
[3] LC_MONETARY=Portuguese_Brazil.1252
[4] LC_NUMERIC=C
[5] LC_TIME=Portuguese_Brazil.1252
attached base packages:
[1] stats graphics grDevices utils datasets
[6] methods base
other attached packages:
[1] RMySQL_0.10.11 DBI_0.5-1 dplyr_0.5.0
[4] digest_0.6.12
loaded via a namespace (and not attached):
[1] lazyeval_0.2.0 magrittr_1.5 R6_2.2.0
[4] assertthat_0.1 rsconnect_0.5 tools_3.3.1
[7] tibble_1.2 Rcpp_0.12.8
我也解决了日期时间列问题,但是简短的回答是,将当前的 MySQL DBI 驱动程序替换为RMariaDB https://github.com/r-dbi/RMariaDB是解决方案。
正如这个问题下的评论提到的,这个问题实际上已经在开发上游解决了RMySQL 从 0.11 开始 https://github.com/r-dbi/RMySQL/blob/2128ad61bb2d2503e105c4daeaa96a69b7bac888/NEWS.md#rmysql-011-1-2016-03-24,但唯一的问题是官方 CRAN 存储库无法提供此版本。换句话说,如果您不介意通过 devtools 手动安装软件包,那么从 RMySQL 0.11 源代码安装正是这个问题的答案。
但正如自述文件中官方所说,RMariaDB https://github.com/r-dbi/RMySQL/commit/4ee512c9579e2a9b58d3ef2c8c68fc744d6670bb#diff-04c6e90faac2675aa89e2176d2eec7d8R4软件包将作为 RMySQL 驱动程序的替代品。当然,这个函数日期时间支持 https://github.com/r-dbi/RMariaDB/blob/master/NEWS.md#rmariadb-011-1-2016-03-24也包含在主流的 RMariaDB 包中。此外,最新版本 1.0.6 可以从 CRAN 官方存储库获取。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)