我在数据表中有大约1,100万行的大型数据集。我想基于多个条件生成随机的行样本。下面是具有所需输出的样本数据集。
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”。
答案 0 :(得分:0)
我不确定这是否是您想要的,但可能使用caret
包和createDataPartition
函数,以使Var频率与原始数据框类似:
选择10%的行:
indexes <- createDataPartition(df$var,times = 1,p = 0.1,list = FALSE)
df.sample <- df[indexes,]
答案 1 :(得分:0)
我认为这可以使用dplyr包来实现。
dat%&gt;%group_by(Var,res)%&gt;%sample_n(5,replace = FALSE)
依赖于每个{Var res}组合有5行;如果情况并非如此,那么您需要指定在这种情况下您想要发生的事情。
编辑 - 重新阅读,如果特定Var中存在多于或少于5个不同的res,则需要采用不同的方法。事情并不十分清楚,但你可能会取得一些可行的事情来取代“&#39; 5&#39;用&#39; 1&#39;在上面的代码中。