Power Query 如何从列表中随机抽取数据? 您所在的位置:网站首页 随机数列函数 Power Query 如何从列表中随机抽取数据?

Power Query 如何从列表中随机抽取数据?

#Power Query 如何从列表中随机抽取数据?| 来源: 网络整理| 查看: 265

在Excel中我们有Rand函数、Randbetween函数,我们可以产生随机数,然后通过这个随机数,作为索引,提取一行或一列中某个位置的数据。可以配合CHOOSE,INDEX等函数来实现随机抽取数据。

今天我们用Power Query来实现这个功能,先从简单的开始:

一个列表中抽取一个值:

= {1..20}{Number.IntegerDivide(Number.RandomBetween(0,19),1)}

= {1..20}{Number.IntegerDivide(Number.RandomBetween(0,19),1)}

我们用了两个函数来实现随机数的效果:

Number.RandomBetween:会产生一个介于两个数值之间的一个随机数 Number.IntegerDivide:上面的函数返回的是含有小数的值,需要取整。

这个公式看起来没什么问题,但实际应用中,不可能是这么整齐的列表,让你明确知道有20个元素,怎么才能保证公平,每个人都有机会被抽取到呢,对,我们要知道列表的元素个数,用List.Count函数来计算元素个数,我们把这个查询做成一个函数:

展开全文

let

源 = (l) => l{Number.IntegerDivide(Number.RandomBetween(0,List.Count(l)-1),1)}

in

let

源 = (l) => l{Number.IntegerDivide(Number.RandomBetween(0,List.Count(l)-1),1)}

in

函数fx有一个参数l,那么List.Count(l)-1就是这个列表l的最后一个元素的位置。我们来引用一下这个函数:

可以正常运行。

下面我们增加点难度:

随机抽取多个值

有了上面的工作,我们可以很轻松的写出下面的函数:

let

源 =(l,n)=> List.Transform({1..n},(x)=>fx(l))

in

let

源 =(l,n)=> List.Transform({1..n},(x)=>fx(l))

in

这个函数名称为fx3,他有两个参数:

l:列表 n:抽取个数

我们直接引用上面的fx函数,使用List.Transform函数做了一个循环抽取的动作。

来看看引用结果:

完全符合预期,50选5,当然这个是放回抽样,就是说有可能会重复抽取,如果要做不放回抽样,应该怎么来写这个函数呢?返回搜狐,查看更多

责任编辑:



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有