我有这个 SQL-Server 代码:ABS(checksum(newid())%14
生成 0 到 13 之间的均匀分布的随机数。
更具体地说,我的 SQL 表中有一个包含这些随机数的列。在 R 中做一些分析,我现在已经使用 Microsoft-R / XDF 文件将此 SQL 表导入到 R 中。我想根据此列对 80%-20% 的数据创建一个测试和训练集。你知道我会怎么做吗?
谢谢。
我有这个 SQL-Server 代码:ABS(checksum(newid())%14
生成 0 到 13 之间的均匀分布的随机数。
更具体地说,我的 SQL 表中有一个包含这些随机数的列。在 R 中做一些分析,我现在已经使用 Microsoft-R / XDF 文件将此 SQL 表导入到 R 中。我想根据此列对 80%-20% 的数据创建一个测试和训练集。你知道我会怎么做吗?
谢谢。
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")
更新:
由于它是一个 .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))