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