ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1050|回复: 3

[分享] 数据分析数据抽样无重复-可全抽样

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-11-20 17:18 | 显示全部楼层 |阅读模式
今天学习数据分析,数据抽样这一块,用Excel如果用Data Analysis,很容易做出,python也很容易。
但Power query中并无此函数,只有一次的Number.RandomBetween这个函数取一次样。
查了一下网上的这个多次取样的方案,几乎都是使用 List.Transform嵌套多次抽样,但这样有个问题,抽样的数据可能重复。
有种方法是,多次抽样,List.Distinct后,使用截取前n项得到想要的,个人感觉这样做不科学,如果100个数据,想抽样50甚至更多,有可能最后的数据没有50个,或者100.
  现在我有个思路,就是 随机挑选一个后,就在列表种将此元素移除,然后对剩下的列表继续处理。使用递归的方法。
  经过多次试验调试,终于成功。
  1. let
  2.     fx = (lst,n) => [f = List.RemoveRange(lst,Number.Round(Number.RandomBetween(1,List.Count(lst)-1)),1),r = (
  3.         if n = 1 then
  4.             {lst{Number.Round(Number.RandomBetween(1,List.Count(lst)-1))}}
  5.                 else @fx(f,n-1)[r]&{f{Number.Round(Number.RandomBetween(1,List.Count(@fx(f,n-1)[f])-1))}}
  6.         )
  7.    ],
  8.    
  9.    Source = Excel.CurrentWorkbook(){[Name="Table2"]}[Content][商品编号],
  10.    A = fx(Source,4)[r]
  11. in
  12.     A
复制代码


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2020-11-21 15:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
感谢分享  

TA的精华主题

TA的得分主题

发表于 2020-11-21 20:21 | 显示全部楼层
本帖最后由 libo5563 于 2020-11-21 20:26 编辑

list. Sort 配合,number. Random, list就乱序了,取数据,去掉已取的,再乱序,取数据,不知道是不是你要的功能

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-11-23 11:29 | 显示全部楼层
libo5563 发表于 2020-11-21 20:21
list. Sort 配合,number. Random, list就乱序了,取数据,去掉已取的,再乱序,取数据,不知道是不是你要 ...

List.Sort不需要吧! 数据多了速度慢了。
是个多余的。
就直接 比方100个数, 取50个 甚至更多。
第一次 从100个里面取 随机取 1-100排列顺序的一个,然后将此数删除,只剩下99
第二次从99个里面取,随机取1-99排列顺序的一个,然后将此数删除,只剩下98
第三次以此类推,用到递归
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-15 16:21 , Processed in 0.029843 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表