我想访问和操作R中的大型数据集。由于它是一个大型CSV文件(约0.5 GB),我打算将其导入
到SQLite,然后从R访问它。我知道sqldf
和RSQLite
包可以做到这一点,但我去了
他们的手册并没有帮助。作为SQL的新手也无济于事。
我想知道我是否必须将R目录设置为SQLite,然后从那里开始?我如何读入R中的数据库呢? 哎呀,如果你知道如何在不使用SQL的情况下从R访问数据库,请告诉我。
谢谢!
答案 0 :(得分:7)
这真的很容易 - sqlite db文件的路径和文件名作为'database'参数传递。这是CRANberries的确:
databasefile <- "/home/edd/cranberries/cranberries.sqlite"
## ...
## main worker function
dailyUpdate <- function() {
stopifnot(all.equal(system("fping cran.r-project.org", intern=TRUE),
"cran.r-project.org is alive"))
setwd("/home/edd/cranberries")
dbcon <- dbConnect(dbDriver("SQLite"), dbname = databasefile)
repos <- dbGetQuery(dbcon,
paste("select max(id) as id, desc, url ",
"from repos where desc!='omegahat' group by desc")
# ...
这就是真的。当然,稍后会有其他疑问......
在从R尝试或直接从R尝试之前,您可以轻松地在sqlite客户端中测试所有SQL查询。
编辑 由于以上显然过于简洁,以下是文档中的示例:
con <- dbConnect(SQLite(), ":memory:") ## in-memory, replace with file
data(USArrests)
dbWriteTable(con, "arrests", USArrests)
res <- dbSendQuery(con, "SELECT * from arrests")
data <- fetch(res, n = 2)
data
dbClearResult(res)
dbGetQuery(con, "SELECT * from arrests limit 3")