我已经使用RMariaDB包连接到MySQL数据库,并且,由于dbplyr包,我能够直接从R studio使用dplyr命令调整数据。然而,我想做一些基本的事情,需要基本的R函数(据我所知,在应用程序中没有等价物)。是否有一种方法可以使用基本的R命令来清理这些数据?提前谢谢。
这个问题的答案来自dbplyr
包的工作方式。dbplyr
将dplyr
的某些命令转换为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
命令。因此,这两个命令在处理数据库表时非常不同。
df = df %>%
mutate(new_var = 2*old_var)
,这会改变内存中的数据。然而,在数据库中,原始数据存储在数据库中,并且在请求时根据您的指令进行转换。有很多方法可以从现有的数据库表中编写全新的数据库表——在dbplyr
标签下已经有几个关于这个的问题了。