0

我有这个 SQL-Server 代码:ABS(checksum(newid())%14

生成 0 到 13 之间的均匀分布的随机数。

更具体地说,我的 SQL 表中有一个包含这些随机数的列。在 R 中做一些分析,我现在已经使用 Microsoft-R / XDF 文件将此 SQL 表导入到 R 中。我想根据此列对 80%-20% 的数据创建一个测试和训练集。你知道我会怎么做吗?

谢谢。

4

2 回答 2

1

rxDataStep您可以使用两个s手动执行此操作:

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-03T09:11:58.023 回答
0

更新: 由于它是一个 .XDF 文件,我会使用该rxSplitXdf函数。这是一篇深入讨论它并显示示例的文章:

https://docs.microsoft.com/en-us/r-server/r-reference/revoscaler/rxsplitxdf

就像是:

rxSplitXdf(inFile, outFileSuffixes = c("train","test"),  
         numOutFiles = 2, splitBy = "rows", 
         rowSelection = (random number >=7))
于 2017-07-01T23:44:39.073 回答