sqldf和RMySQL都是允许访问MySQL数据库的R包(前者使用后者)。它们都允许这样的语句:
RMySQL:“运行任意SQL语句并提取其所有输出(返回data.frame):”
dbGetQuery(con, "select count(*) from a_table")
dbGetQuery(con, "select * from a_table") sqldf:
library(sqldf)
sqldf("select * from iris limit 5")
sqldf("select count(*) from iris")
sqldf("select Species, count(*) from iris group by Species")
# create a data frame
DF <- data.frame(a = 1:5, b = letters[1:5])那么有什么不同呢?sqldf提供了什么RMySQL没有的功能?
发布于 2013-02-11 10:56:42
sqldf用于发出SQL语句,并让它们作用于数据帧。iris不是一个数据库表,而是一个内置数据集。
> head(iris, n=3)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosasqldf不用于连接到数据库。
发布于 2013-02-11 12:11:10
除了Lundberg观察到数据帧是SQL命令可接受的目标之外,还有一点是,sqldf可以针对SQLite (缺省)、H2、MySQL或postgresSQL中的任何(磁盘驻留)表:https://code.google.com/p/sqldf/
https://stackoverflow.com/questions/14805218
复制相似问题