选择随机大小的随机行集

时间:2017-10-27 09:35:08

标签: r dplyr

关于提取行的随机子集的this问题。

我的数据如下:

scenario   urban_areas_simple       place      population
North       Primary Urban Areas     Leeds      700,000
South       Primary Urban Areas     London     9,000,000
Scotland    Rural                   Shetland   22,000
...         ...                     ...

使用dplyr我有以下代码,根据我的scenariourban_areas_simple列中的条件,可以使用并随机选择4行:

filter(lads, 
    scenario == "north" & urban_areas_simple == "Primary Urban Areas") %>% 
    sample_n(4) 

但是,我也想随机选择所选择的行数,因为这里我只选择了4个作为例子。

对于随机大小的子集,我如何随机选择满足这些条件的行?

注意:每个条件可能只有10-50行。

2 个答案:

答案 0 :(得分:1)

您可以使用sample(1:100, size = 1)而不是4。这将选择1到100之间的随机数。如果要使过程可重现,请在开始使用依赖于随机种子的任何函数之前粘贴set.seed(x)x是任何整数。

答案 1 :(得分:0)

filter(lads, 
  scenario == "north" & urban_areas_simple == "Primary Urban Areas") %>% 
  sample_frac(runif(1)) 

就是这样。

该值保证可以退回,并且可以处理具有不相等组大小的分组数据帧的分层抽样。