Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于R中的多条件从数据表中随机选取数据样本_R - Fatal编程技术网

基于R中的多条件从数据表中随机选取数据样本

基于R中的多条件从数据表中随机选取数据样本,r,R,我在一个数据表中有一个大约1100万行的大型数据集。我想根据多个条件生成一个随机的行样本。下面是具有所需输出的示例数据集 Var Code Count_Curr res 1 146 1649 0.05 1 147 1649 0.05 1 148 1649 0.1 1 149 1649 0.06 1 150 1649

我在一个数据表中有一个大约1100万行的大型数据集。我想根据多个条件生成一个随机的行样本。下面是具有所需输出的示例数据集

Var  Code  Count_Curr        res
1     146   1649             0.05
1     147   1649             0.05
1     148   1649             0.1
1     149   1649             0.06
1     150   1649             0.01
1     151   1649             0.1
1     152   1649             0.06
1     153   1649             0.1
2     146   1649             0.05
2     147   1649             0.05
2     148   1649             0.1
2     149   1649             0.06
2     150   1649             0.01
2     151   1649             0.1
2     152   1649             0.06
2     153   1649             0.1
3     146   1649             0.05
3     147   1649             0.05
3     148   1649             0.1
3     149   1649             0.06
3     150   1649             0.01
3     151   1649             0.1
3     152   1649             0.06
3     153   1649             0.1
采样后的期望输出应如下所示

Var  Code  Count_Curr        res
1     146   1649             0.05
1     147   1649             0.1
1     146   1649             0.06
2     146   1649             0.05
2     147   1649             0.1
2     146   1649             0.06
3     146   1649             0.05
3     147   1649             0.1
3     146   1649             0.06

我想从每个“var”中选择5或10个代码,并且它还应该涵盖该“var”可用的所有“res”。

我不确定这是否是您想要的,但可以使用
caret
包和
createDataPartition
函数,以保持var频率与原始数据帧相似:

要选择10%的行,请执行以下操作:

indexes <- createDataPartition(df$var,times = 1,p = 0.1,list = FALSE)
df.sample <- df[indexes,]

索引我认为这可以通过使用dplyr包来实现

dat%>%分组依据(变量,res)%>%sample n(5,replace=FALSE)

它依赖于每个{Var res}组合有5行;如果不是这样,您需要指定在这种情况下希望发生什么

编辑-重读,如果特定变量中有5个或5个以上不同的res,则需要不同的方法。目前还不清楚是哪种情况,但在上述代码中,用“1”替换“5”可能是可行的