R:从一系列类别中随机抽取偶数个观察值

标签 r sample random quota categorical-data

我之前从我的数据框中随机抽取了邮政编码样本,然后意识到我并没有在所有更高级别的统计单位中进行抽样。我有大约 100 万个邮政编码和 7000 个中间输出统计单位。我希望样本中每个统计单位的邮政编码数量大致相同。

如何从每个更高级别的统计单位中随机抽取 35 个邮政编码?

我之前使用以下代码随机抽取了 250,000 个邮政编码:

total.sample <- total[sample(1:nrow(total), 250000,
                           replace=FALSE),] 

如何根据另一个列变量(例如更高级别的统计单位(参见下面数据框结构中的 msoa.rank))指定邮政编码的随机样本配额?

数据库结构:

'data.frame':   1096289 obs. of  25 variables:
$ pcd                : Factor w/ 986055 levels "AL100AB","AL100AD",..: 282268 282258 
$ mbps2              : int  0 1 0 0 0 1 0 0 0 0 ...
$ averagesp          : num  16 7.8 7.8 9.5 9.4 3.2 11.1 19.4 10.5 11.8 ...
$ mediansp           : num  18.2 8 7.8 8.1 8.5 3.2 8.1 18.7 9.7 8.9 ...
$ nga                : int  0 0 0 0 0 0 0 0 0 0 ...
$ x                  : int  533432 532192 533416 533223 532866 531394 532899 532744 
$ total.dps          : int  11 91 10 7 9 10 3 5 21 12 ...
$ connections.density: num  7.909 0.747 3.1 7.714 1.889 ...
$ urban              : int  1 1 1 1 1 1 1 1 1 1 ...
$ gross.pay          : num  36607 36607 36607 36607 36607 ...
$ p.tert             : num  98.8 98.8 98.8 98.8 98.8 ...
$ p.kibs             : num  70.3 70.3 70.3 70.3 70.3 ...
$ density            : num  25.5 25.5 25.5 25.5 25.5 25.5 25.5 25.5 25.5 25.5 ...
$ p_m_s              : num  93.5 93.5 93.5 93.5 93.5 ...
$ p_m_l              : num  6.52 6.52 6.52 6.52 6.52 ...
$ p.edu              : num  62.6 62.6 62.6 62.6 62.6 ...
$ p.claim            : num  1.58 1.58 1.58 1.58 1.58 ...
$ p.non.white        : num  21.4 21.4 21.4 21.4 21.4 21.4 21.4 21.4 21.4 21.4 ...
$ msoa.rank          : int  2 2 2 2 2 2 2 2 2 2 ...
$ oslaua.rank        : int  321 321 321 321 321 321 321 321 321 321 ...
$ nuts2.rank         : int  22 22 22 22 22 22 22 22 22 22 ...
$ gor.rank           : int  8 8 8 8 8 8 8 8 8 8 ...
$ cons               : int  1 1 1 1 1 1 1 1 1 1 ...

pcd = zip

msoa.rank = 每个中间产出统计单元的序数变量

最佳答案

这个很简单有望很快在dplyr中得到修复(谢谢,@Henrik!)

library(dplyr)
yourSample <- yourData %>%
    group_by(msoa.rank) %>%
    sample_n(size = 35) # currently buggy

在那之前,这里有一个解决方法,(感谢@beginneR)

yourSample <- yourData %>%
    group_by(msoa.rank) %>%
    do(sample_n(., size = 35))

或者坚持使用普通的旧 plyr 进行分组。

library(plyr)
yourSample <- ddply(yourData, "msoa.rank", .fun = function(x) {sample_n(x, size = 35)})

关于R:从一系列类别中随机抽取偶数个观察值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24499066/

相关文章:

r - 如何使用sparklyr对选定的列用列均值估算缺失值?

RMarkdown : ! 包 pdftex.def 错误;找不到在线图片?

Android-NDK构建系统(构建hello-gl2)

javascript - 如何在不使用 glMatrix 等任何库的情况下在 WebGL 中实现一个简单的立方体?

sdk - CUDA 5.0 : checkCudaErrors fails to find correct “check” method if class has a “check” method

sql - PostgreSQL:按随机天数更改日期

r - 确定字符向量中与匹配向量 [R] 中的最大匹配数相匹配的位置

r - 如何在所有其他代码块之后强制 Knitr 评估\Sexpr

.net - 多线程Random.NextDouble()

java - 点击android上的随机7位数字