今天有同事问我怎么在Excel中进行随机抽样,这个问题我在以前的工作中还从来没有涉及过,于是先自己研究一下
网上搜索了一番,可以通过RAND()函数来实现,如下图所示:
假设我们有30行数据,在最后一列输入产生随机数的函数“=RAND()”,然后对随机数进行排序“=RANK(B2,$B$2:$B$31,0)”,取排序小于6的为样本并产生样本标志”=IF(C2<6,TRUE,FALSE)”,最后填充整列。
这样就对每行数据,产生了一个1-30的不重复的随机数,取1-5的数为样本,即完成了对这30个数的随机抽样,选中B列,按F9键,可以对公式进行重新计算,即重新产生随机数。
不过同事叫我帮忙的样本总量有十多万行数据,于是将公式简化为两列,第一列产生随机数“=RAND()”,第二列是样本标志“=IF(RANK(B2,$B$2:$B$31,1)<6,TRUE,FALSE)”。
用到的函数简介:
RAND 函数
RAND 返回了一个大于等于 0 且小于 1 的平均分布的随机实数。 每次计算工作表时都会返回一个新的随机实数。
若要生成 a 与 b 之间的随机实数,请使用:
=RAND()*(b-a)+a
若要使用函数 RAND 生成一个随机数,但不希望每次计算单元格时数字都出现变化,可在编辑栏中输入 =RAND(),然后按 F9 将公式更改为随机数。 公式将计算并只保留一个值。
RANK 函数
返回一列数字的数字排位。 数字的排位是其相对于列表中其他值的大小。
语法
RANK(number,ref,[order])
RANK 函数语法具有下列参数:
Number 必需。 要找到其排位的数字。
Ref 必需。 数字列表的数组,对数字列表的引用。 Ref 中的非数字值会被忽略。
Order 可选。 一个指定数字排位方式的数字。
如果 order 为 0(零)或省略,Microsoft Excel 对数字的排位是基于 ref 为按照降序排列的列表。
如果 order 不为零,Microsoft Excel 对数字的排位是基于 ref 为按照升序排列的列表。