我有以下SQL-Server代码:ABS(checksum(newid())%14
在0到13之间产生统一分布的随机数。
更具体地说,我的SQL表中有一个列,它具有这些随机数。在R中做了一些分析,我现在使用Microsoft/ XDF文件将这个SQL表导入到R中。我想创建一个测试和培训集80%-20%的这一数据的基础上,本专栏。你知道我会怎么做吗?
谢谢。
发布于 2017-07-03 01:11:58
您可以使用两个rxDataStep
来手动完成此操作:
train <- rxDataStep(infile, "train.xdf", rowSelection=random_number < 11)
test <- rxDataStep(infile, "test.xdf", rowSelection=random_number >= 11)
当截止值为0.8*13时,如果要使用Xdf文件处理大量数据,请考虑安装dplyrXdf。它允许您使用dplyr谓词和管道,将Xdfs视为数据帧。你可以用
devtools::install_github("revolutionAnalytics/dplyrXdf")
上述代码将成为
train <- filter(infile, random_number < 11, .outFile="train.xdf")
test <- filter(infile, random_number >= 11, .outFile="test.xdf")
或者,您可以从输入中创建一个因素变量,并对此调用rxSplit
:
rxDataStep(infile, infile,
transforms=list(splitVar=factor(random_number < 11, levels=c("train", "test")))
lst <- rxSplit(infile, splitByFactor="splitVar")
发布于 2017-07-01 15:44:39
更新:,因为它是一个.XDF文件,所以我会使用rxSplitXdf
函数。以下是一篇深入讨论这一问题的文章,并举例说明:
https://learn.microsoft.com/en-us/r-server/r-reference/revoscaler/rxsplitxdf
类似于:
rxSplitXdf(inFile, outFileSuffixes = c("train","test"),
numOutFiles = 2, splitBy = "rows",
rowSelection = (random number >=7))
https://stackoverflow.com/questions/44866256
复制相似问题