将日期从 MySQL 正确导入 R
importing date correctly from MySQL into R
我的问题几乎相同as this one。简而言之,我正在使用 dplyr(连同 RMySQL)导入带有日期时间列的 MySQL table,我想将其转换为 R 中的日期。在问题中上面链接,posted 没有答案,只有 Hadley 的评论。 OP 显然根据所发表的评论找到了解决方案。我从 Hadley 的评论中了解到,我可以通过将列作为日期正确导入 R 来解决问题。然后就不需要使用 as.Date。但是,我找不到如何使用 dplyr 和 RMySQL.
我不知道如何 post 一个完全可重现的例子,因为它是一个 MySQL 数据库连接,但我会 post 我的代码:
如果我尝试:
pedidos <- my_db %>%
tbl("pedidos") %>%
mutate(test = as.Date(DateSent))
然后我运行:
pedidos
R returns:
FUNCTION AS.DATE does not exist
就像另一个问题中的 OP 一样,我可以使用 collect() 来解决这个问题,但是它违背了不将数据复制到内存中的目的。这是有关 MySQL 中数据类型的一些信息
DateSent 是日期时间
和 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
我也解决了日期时间列的问题,但是简短的回答是,用 RMariaDB 替换当前的 MySQL DBI 驱动程序是解决方案。
正如这个问题下的评论所说,这个问题实际上已经在RMySQL from 0.11的开发上游解决了,但唯一的问题是官方CRAN存储库没有这个版本。换句话说,如果您不介意通过 devtools 手动安装软件包,那么从 RMySQL 0.11 源代码安装正是这个问题的答案。
但是正如readme中官方所说,RMariaDB package is going to be as a replacement to the RMySQL driver. Surely, the function that Datetime Support也包含在RMariaDB的主流包中。更重要的是,最新版本 1.0.6 可从 CRAN 官方存储库获得。
我的问题几乎相同as this one。简而言之,我正在使用 dplyr(连同 RMySQL)导入带有日期时间列的 MySQL table,我想将其转换为 R 中的日期。在问题中上面链接,posted 没有答案,只有 Hadley 的评论。 OP 显然根据所发表的评论找到了解决方案。我从 Hadley 的评论中了解到,我可以通过将列作为日期正确导入 R 来解决问题。然后就不需要使用 as.Date。但是,我找不到如何使用 dplyr 和 RMySQL.
我不知道如何 post 一个完全可重现的例子,因为它是一个 MySQL 数据库连接,但我会 post 我的代码:
如果我尝试:
pedidos <- my_db %>%
tbl("pedidos") %>%
mutate(test = as.Date(DateSent))
然后我运行:
pedidos
R returns:
FUNCTION AS.DATE does not exist
就像另一个问题中的 OP 一样,我可以使用 collect() 来解决这个问题,但是它违背了不将数据复制到内存中的目的。这是有关 MySQL 中数据类型的一些信息 DateSent 是日期时间
和 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
我也解决了日期时间列的问题,但是简短的回答是,用 RMariaDB 替换当前的 MySQL DBI 驱动程序是解决方案。
正如这个问题下的评论所说,这个问题实际上已经在RMySQL from 0.11的开发上游解决了,但唯一的问题是官方CRAN存储库没有这个版本。换句话说,如果您不介意通过 devtools 手动安装软件包,那么从 RMySQL 0.11 源代码安装正是这个问题的答案。
但是正如readme中官方所说,RMariaDB package is going to be as a replacement to the RMySQL driver. Surely, the function that Datetime Support也包含在RMariaDB的主流包中。更重要的是,最新版本 1.0.6 可从 CRAN 官方存储库获得。