如何使用基础R命令操作/清理位于MySQL数据库中的数据?



我已经使用RMariaDB包连接到MySQL数据库,并且,由于dbplyr包,我能够直接从R studio使用dplyr命令调整数据。然而,我想做一些基本的事情,需要基本的R函数(据我所知,在应用程序中没有等价物)。是否有一种方法可以使用基本的R命令来清理这些数据?提前谢谢。

这个问题的答案来自dbplyr包的工作方式。dbplyrdplyr的某些命令转换为SQL。例如:

library(dplyr)
library(dbplyr)
data(mtcars)
# setup simulated database connection
df_postgre = tbl_lazy(mtcars, con = simulate_postgres())
# fetch first 5 records
first_five = df_postgre %>% head(5)
# view SQL transaltion
first_five %>% show_query()
# resulting SQL translation
<SQL>
SELECT *
FROM `df`
LIMIT 5

此方法的主要约束是dbplyr只能将某些命令转换为SQL。因此,像下面这样的操作将失败:

# setup simulated database connection
df_postgre = tbl_lazy(mtcars, con = simulate_postgres())
# fetch first 5 records
first_five = df_postgre[1:5,]

虽然head(df, 5)df[1:5,]在本地R内存中对data.frames产生相同的输出,但dbplyr不能转换开发人员的意图,只能转换特定的dplyr命令。因此,这两个命令在处理数据库表时非常不同。

这里要考虑的另一个因素是数据库主要是只读的。在R中我们可以写
df = df %>%
mutate(new_var = 2*old_var)

,这会改变内存中的数据。然而,在数据库中,原始数据存储在数据库中,并且在请求时根据您的指令进行转换。有很多方法可以从现有的数据库表中编写全新的数据库表——在dbplyr标签下已经有几个关于这个的问题了。

最新更新