我非常感谢您的时间阅读本。
我的CSV格式的图万条记录和3000(主要是分类数据)列的尤伯杯大小30GB文件。 我想引导的多项式回归子样本,但它证明很难,即使在我的机器我的64GB RAM和两倍的交换文件,过程变得超级慢和死机。
我正在考虑中的R生成子样本indicies,并将它们送入用awk或者sed系统命令,但不知道如何做到这一点。 如果有人知道的清洁方式只用R命令要做到这一点,我会很感激。
一个问题是,我需要选择子样本的完整的观察,这是我需要有一个特定的多项观察所有行 - 他们是不一样的长度继续观察。 我打算使用glmnet然后一些奇特的转变,以得到一个近似的多项案例。 另一点是,我不知道该如何选择样本大小,以适应周围的内存限制。
非常感谢您的想法。
R.version
platform x86_64-pc-linux-gnu
arch x86_64
os linux-gnu
system x86_64, linux-gnu
status
major 2
minor 15.1
year 2012
month 06
day 22
svn rev 59600
language R
version.string R version 2.15.1 (2012-06-22)
nickname Roasted Marshmallows
尤达
我认为这是使用CSV作为这样的文件大小的数据格式非常可怕的想法-为什么不将其转化为一个SQLite(或“实际”的数据库),并与SQL查询提取您的子集(使用DBI / RSQLite 2 )?
你只需要导入一次,并没有必要将整个事情加载到内存中,因为您可以直接导入CSV文件导入到sqlite的。
如果在一般你想与比你的内存更大的数据集工作,你可能也想看看bigmemory 。
作为themel指出,R是非常阅读的CSV文件很慢。
如果你有sqlite的,它确实是最好的方法,因为它出现的数据挖掘不只是一次,而是在多个会议上,以多种方式。
让我们看一下我们的选项
读取CSV到R(慢)
中的R这样做是像20倍慢,比写在C(我的机器上)的工具
这是很慢
read.csv( file='filename.csv' , head=TRUE , sep=",")
转换为STATA从那里事先DTA文件和负载
不是很大,但它应该工作(我从来没有尝试过在30演出文件,所以我不能肯定地说)
编写一个程序来CSV转换成DTA格式(如果你知道你在做什么)
使用从资源http://www.stata.com/help.cgi?dta和代码https://svn.r-project.org/R-packages/trunk/foreign/src/stataread.c阅读和编写和http://sourceforge.net/projects/libcsv/
(这在过去已经完成。不过,我还没有使用它,所以我不知道它如何执行)
然后,使用foreign
包( http://cran.r-project.org/web/packages/foreign/index.html ),一个简单的
library(foreign)
whatever <- read.dta("file.dta")
将加载数据
用mysql直接导入CSV数据(硬盘使用,但它并不坏,如果你知道SQL)
从s SQL控制台
LOAD DATA LOCAL INFILE 'file.csv' INTO TABLE my_table
IGNORE 1 LINES <- If csv file contains headers
FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n'
要么
mysql -e "LOAD DATA INFILE 'ls.dat' INTO TABLE mytable1" mydatabase
然后从R控制台玩,使用RMySQL
R口MySQL数据库http://cran.r-project.org/web/packages/RMySQL/index.html
install.packages('RMySQL')
然后玩像
mydb = dbConnect(MySQL(), user=username, password=userpass, dbname=databasename, host=host)
dbListTables(mydb)
record <- dbSendQuery(mydb, "select * from whatever")
dbClearResult(rs)
dbDisconnect(mydb)
基于R做所有的源码/ PostgreSQL的/ MySQL后端SQL的东西导入CSV(Reccomended)
下载,从https://code.google.com/p/sqldf/如果没有包
或svn checkout http://sqldf.googlecode.com/svn/trunk/ sqldf-read-only
从R的控制台,
install.packages("sqldf")
# shows built in data frames
data()
# load sqldf into workspace
library(sqldf)
MyCsvFile <- file("file.csv")
Mydataframe <- sqldf("select * from MyCsvFile", dbname = "MyDatabase", file.format = list(header = TRUE, row.names = FALSE))
和您去!
Presonally,我会建议图书馆(sqldf)选项:-)