如何从 R Revolution Enterprise 中分离的大文件中获取所有数据?
How can I get all the data from separated large files in R Revolution Enterprise?
我正在使用 RevoR entreprise 来处理导入的大型数据文件。文档中给出的示例指出 10 个文件(每个 1000000 行)将使用 rxImport 循环导入为数据集,如下所示:
setwd("C:/Users/Fsociety/Bigdatasamples")
Data.Directory <- "C:/Users/Fsociety/Bigdatasamples"
Data.File <- file.path(Data.Directory,"mortDefault")
mortXdfFileName <- "mortDefault.xdf"
append <- "none"
for(i in 2000:2009){
importFile <- paste(Data.File,i,".csv",sep="")
mortxdf <- rxImport(importFile, mortXdfFileName, append = append, overwrite = TRUE, maxRowsByCols = NULL)
append <- "rows"
}
mortxdfData <- RxXdfData(mortXdfFileName)
knime.out <- rxXdfToDataFrame(mortxdfData)
这里的问题是,由于 maxRowsByCols
参数,我在数据集中只得到 500000 行,默认值为 1e+06
我将其更改为更高的值,然后更改为 NULL
但它仍然会截断文件中的数据。
由于您要导入到 XDF
,因此 maxRowsByCols
无关紧要。此外,在最后一行中,您读入了 data.frame
,这种做法首先违背了使用 XDF
的目的。
此代码确实适用于此数据 http://packages.revolutionanalytics.com/datasets/mortDefault.zip,这就是我假设您正在使用的数据。
500K 行是由于 rowsPerRead
参数,但这只决定了块大小。所有数据均以 500k 为增量读入,但可以根据您的需要进行更改。
setwd("C:/Users/Fsociety/Bigdatasamples")
Data.Directory <- "C:/Users/Fsociety/Bigdatasamples"
Data.File <- file.path(Data.Directory, "mortDefault")
mortXdfFileName <- "mortDefault.xdf"
append <- "none"
overwrite <- TRUE
for(i in 2000:2009){
importFile <- paste(Data.File, i, ".csv", sep="")
rxImport(importFile, mortXdfFileName, append=append, overwrite = TRUE)
append <- "rows"
overwrite <- FALSE
}
rxGetInfo(mortxdfData, getBlockSizes = TRUE)
# File name: C:\Users\dnorton\OneDrive\R\MarchMadness2016\mortDefault.xdf
# Number of observations: 1e+07
# Number of variables: 6
# Number of blocks: 20
# Rows per block (first 10): 5e+05 5e+05 5e+05 5e+05 5e+05 5e+05 5e+05 5e+05 5e+05 5e+05
# Compression type: zlib
已修复,问题是 RxXdfData() 有 maxrowbycols 限制,将其更改为 NULL 会将整个 rxXdfData 转换为 Knime 的 data.frame 对象。
我正在使用 RevoR entreprise 来处理导入的大型数据文件。文档中给出的示例指出 10 个文件(每个 1000000 行)将使用 rxImport 循环导入为数据集,如下所示:
setwd("C:/Users/Fsociety/Bigdatasamples")
Data.Directory <- "C:/Users/Fsociety/Bigdatasamples"
Data.File <- file.path(Data.Directory,"mortDefault")
mortXdfFileName <- "mortDefault.xdf"
append <- "none"
for(i in 2000:2009){
importFile <- paste(Data.File,i,".csv",sep="")
mortxdf <- rxImport(importFile, mortXdfFileName, append = append, overwrite = TRUE, maxRowsByCols = NULL)
append <- "rows"
}
mortxdfData <- RxXdfData(mortXdfFileName)
knime.out <- rxXdfToDataFrame(mortxdfData)
这里的问题是,由于 maxRowsByCols
参数,我在数据集中只得到 500000 行,默认值为 1e+06
我将其更改为更高的值,然后更改为 NULL
但它仍然会截断文件中的数据。
由于您要导入到 XDF
,因此 maxRowsByCols
无关紧要。此外,在最后一行中,您读入了 data.frame
,这种做法首先违背了使用 XDF
的目的。
此代码确实适用于此数据 http://packages.revolutionanalytics.com/datasets/mortDefault.zip,这就是我假设您正在使用的数据。
500K 行是由于 rowsPerRead
参数,但这只决定了块大小。所有数据均以 500k 为增量读入,但可以根据您的需要进行更改。
setwd("C:/Users/Fsociety/Bigdatasamples")
Data.Directory <- "C:/Users/Fsociety/Bigdatasamples"
Data.File <- file.path(Data.Directory, "mortDefault")
mortXdfFileName <- "mortDefault.xdf"
append <- "none"
overwrite <- TRUE
for(i in 2000:2009){
importFile <- paste(Data.File, i, ".csv", sep="")
rxImport(importFile, mortXdfFileName, append=append, overwrite = TRUE)
append <- "rows"
overwrite <- FALSE
}
rxGetInfo(mortxdfData, getBlockSizes = TRUE)
# File name: C:\Users\dnorton\OneDrive\R\MarchMadness2016\mortDefault.xdf
# Number of observations: 1e+07
# Number of variables: 6
# Number of blocks: 20
# Rows per block (first 10): 5e+05 5e+05 5e+05 5e+05 5e+05 5e+05 5e+05 5e+05 5e+05 5e+05
# Compression type: zlib
已修复,问题是 RxXdfData() 有 maxrowbycols 限制,将其更改为 NULL 会将整个 rxXdfData 转换为 Knime 的 data.frame 对象。