RSQLite中的因素
发布时间:2020-12-12 18:55:40 所属栏目:百科 来源:网络整理
导读:我一直无法找到有关RSQLite如何处理因素的文档.从快速测试(见下文)看,它们看起来像是转换为角色. 问题1:有没有办法将它们作为因素保存?我可以想到一些kludgy方式(主要涉及一个单独的表或.Rdata文件存储因子水平),但似乎应该有一个标准,因此更可维护的方式
我一直无法找到有关RSQLite如何处理因素的文档.从快速测试(见下文)看,它们看起来像是转换为角色.
问题1:有没有办法将它们作为因素保存?我可以想到一些kludgy方式(主要涉及一个单独的表或.Rdata文件存储因子水平),但似乎应该有一个标准,因此更可维护的方式这样做. 问题2:如果不是RSQLite,比其他一些数据库或类似数据库的包?我的用例很简单:附加一堆大的(2-5mm行X 550列)data.frames,因为每个都被处理以构建一个巨大的数据库,然后能够只选择我想从该数据库中带来的行进入data.table并继续工作. library(RSQLite) # Create db <- dbConnect( SQLite(),dbname="~/temp/test.sqlite" ) # Write test set.seed(1) testDat <- data.frame(x=runif(1000),y=runif(1000),g1=sample(letters[1:10],1000,replace=TRUE),g2=rep(letters[1:10],each=100),g3=factor( sample(letters[1:10],replace=TRUE) )) if(dbExistsTable(db,"test")) dbRemoveTable(db,"test") dbWriteTable( conn = db,name = "test",value = testDat,row.names=FALSE ) # Read test testRecovery <- dbGetQuery(db,"SELECT * FROM test") testSelection <- dbGetQuery(db,"SELECT * FROM test WHERE g3=='h' OR g3=='e' ") # Close dbDisconnect(db) 解决方法对我来说看起来很简单:因素是一个只有S和R知道的概念.完全停止.因此,要将它们放入数据库并返回,您需要编写映射器.要么是简单化又要做所有as.character(并假设大多数DB后端将像R一样对哈希字符串进行哈希处理).或者以数据库为中心,将因子分成(无符号)(可能是短整数)整数和标签. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |