假设多年来动物园里每天都有动物活动的时间序列.非常大的数据集的子集可能如下所示:
library(data.table)
type <- c(rep('giraffe',90),rep('monkey',90),rep('anteater',90))
status <- as.factor(c(rep('display',31),rep('caged',28),rep('display',31),
rep('caged',25), rep('display',35),rep('caged',30),rep('caged',10),
rep('display',10),rep('caged',10),rep('display',60)))
date <- rep(seq.Date( as.Date("2001-01-01"), as.Date("2001-03-31"), "day" ),3)
Run Code Online (Sandbox Code Playgroud)
"类型"是动物类型,"状态"是动物当天所做事情的指示,例如,笼养或展示.
animals <- data.table(type,status,date);animals
type status date
1: giraffe display 2001-01-01
2: giraffe display 2001-01-02
3: giraffe display 2001-01-03
4: giraffe display 2001-01-04
5: giraffe display 2001-01-05
---
266: anteater display 2001-03-27
267: anteater display 2001-03-28
268: anteater display 2001-03-29
269: anteater display 2001-03-30
270: anteater display 2001-03-31
Run Code Online (Sandbox Code Playgroud)
假设我们想要将其汇总到月度系列中,该系列列出了动物的整个月状态信息.在新系列中,"状态"反映了该月初动物的状态."fullmonth"是一个二进制变量(1 = TRUE,0 = FALSE),表示此状态是否持续整个月,"anydisp"是否为二进制变量(1 = TRUE,0 = FALSE),表示动物是否开启在一个月内的任何时间显示(> = 1天).因此,因为长颈鹿在1月和3月的整个月展出,但在2月份被关在笼子里,因此得到了相应的标记.
date <- rep(seq.Date( …Run Code Online (Sandbox Code Playgroud) 我一直在尝试在 R 中使用 sqldf 包,但它只是在加载所需的包“proto”时停止。像这样:
库(sqldf)
加载所需的包:DBI
加载所需的包:gsubfn
加载所需的包:proto
我正在使用 R 版本 3.0.0 (2013-04-03)——“Masked Marvel”。有人可以让我知道这里缺少什么吗?多谢!
我最近升级了R,RSQLite和sqldf(以下版本).
一般:
sqldf('create table foo as select * from bar', db = 'test.db')
Run Code Online (Sandbox Code Playgroud)
应该在附加的sqlite数据库中创建一个名为'foo'的表,如果存在加载新表,则使用数据框'bar'.
相反,我得到一个'没有这样的表'错误,而且当我查看数据库时,创建了'foo'和'bar'表.
可重复的例子:
library(RSQLite)
library(sqldf)
mydb = 'test.db'
## remove file if it exists
system(paste('rm', mydb))
## open connection
##con <- dbConnect(SQLite(), dbname=mydb)
system(paste('ls -l', mydb))
sqldf( paste0( 'attach "', mydb, '" as new' ) )
system(paste('ls -l', mydb))
class(mtcars)
sqldf( 'create table mycars as select * from mtcars', dbname = mydb )
sqldf('select * from sqlite_master', dbname = mydb)
sqldf('select * from main.mycars limit 1', dbname …Run Code Online (Sandbox Code Playgroud) 我在 r 中有一个包含近 2000 个变量的大型数据集。然后我使用 sqldf 编写一些 case 语句来在原始数据集上创建新列。但是我收到以下错误:
Error in rsqlite_send_query(conn@ptr, statement) : too many SQL variables
Run Code Online (Sandbox Code Playgroud)
我今天重新启动了我的笔记本电脑,以前这个错误从未发生过。
任何帮助表示赞赏。
我正在尝试使用R中的sqldf库重写一些代码,这应该允许我在数据帧上运行SQL查询,但是我遇到了一个问题,每当我尝试运行查询时,R似乎试图查询我使用的实际真正的MySQL数据库骗局,并通过我试图搜索的数据框的名称查找表.
当我运行这个:
sqldf("SELECT COUNT(*) from work.class_scores")
Run Code Online (Sandbox Code Playgroud)
我明白了:
mysqlNewConnection(drv,...)出错:RS-DBI驱动程序:(无法连接到数据库:错误:无法通过套接字'/tmp/mysql.sock'连接到本地MySQL服务器(2))
当我尝试使用两种不同的方式指定位置时(第一个形成googlecode页面,第二个应该是基于文档的权利)
> sqldf("SELECT COUNT(*) from work.class_scores", sqldf.driver = "SQLite")
Error in sqldf("SELECT COUNT(*) from work.class_scores", sqldf.driver = "SQLite") :
unused argument(s) (sqldf.driver = "SQLite")
> sqldf("SELECT COUNT(*) from work.class_scores", drv = "SQLite")
Loading required package: tcltk
Loading Tcl/Tk interface ... Error : .onLoad failed in loadNamespace() for 'tcltk', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared library '/Library/Frameworks/R.framework/Resources/library/tcltk/libs/x86_64/tcltk.so':
dlopen(/Library/Frameworks/R.framework/Resources/library/tcltk/libs/x86_64/tcltk.so, 10): Library not loaded: /usr/local/lib/libtcl8.5.dylib
Referenced from: /Library/Frameworks/R.framework/Resources/library/tcltk/libs/x86_64/tcltk.so
Reason: …Run Code Online (Sandbox Code Playgroud) 给定数据帧
df1 <- data.frame(CustomerId=c(1:6),Product=c(rep("Toaster",3),rep("Radio",3)))
df2 <- data.frame(CustomerId=c(2,4,6),State=c(rep("Alabama",2),rep("Ohio",1)))
Run Code Online (Sandbox Code Playgroud)
存储在列表中
dflist <- c(df1,df2)
Run Code Online (Sandbox Code Playgroud)
如何在这些数据帧上运行sqldf查询(连接)?
尝试失败:
test <- sqldf("select a.CustomerId, a.Product, b.State from dflist[1] a
inner join dflist[2] b on b.id = a.id")
test <- sqldf("select a.CustomerId, a.Product, b.State from dflist$df1 a
inner join dflist$df2 b on b.CustomerId = a.CustomerId")
Run Code Online (Sandbox Code Playgroud) 我有SQLdf的问题.虽然我正在尝试更新表,但它总是将NULL作为输出.我对这个问题嗤之以鼻,但我无法弄清楚如何解决它.我的代码是:
fn$sqldf("update cons set V1='%$numbernew%' where V1=$'contact'")
Run Code Online (Sandbox Code Playgroud)
但是在我检查它以确定是否有变化后,所有都与开始时相同.任何想法都会有帮助.
当我从sqldf函数文档运行第一个示例时:
library(sqldf)
a1s <- sqldf("select * from warpbreaks limit 6")
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
Error in if (.allows_extensions(db)) { :missing value where TRUE/FALSE needed
Run Code Online (Sandbox Code Playgroud)
在将一些软件包更新到最新版本后,今天出现了此错误.有任何建议如何解决此问题或如何恢复到以前的版本?
我有一个具有"DATE"字段的数据框.例如:"24-10-2015"
变量采用日期格式.
当我使用sqldf时,例如:select min(DATE), MAX (DATE) from table ...输出是一个数字16623.
试过FORMAT和CONVERT,但它们在sqldf中不起作用.
任何提示?
我希望我要写的内容有意义。\n如果你看看
\n\n解释了如何查询 \xc3\xa0 la SQL(来自 R 的 csv 文件)。\n就我而言,我有大量数据存储为大型(或大于我的 RAM)平面文件。
\n例如,我想将其中一个存储为 SQLite 数据库,而不将其完全加载到内存中。\n想象一下,如果您可以自动读取该文件中适合您的 RAM 的有限块,将其存储到 SQL 中,然后释放一些内存,处理下一个块,依此类推,直到所有文件都在数据库中。\n这在 R 中可行吗?如果表格可以存储为 tibble,那就更好了,但这并不重要。\n任何建议表示赞赏。\n谢谢!
\n