作者: 宋星云 中国科学院心理研究所硕士,R语言爱好者。已有多年数据分析与R语言的实战经验,毕业后将从事数据分析工作。
个人公众号:星云实验室
对给定的样本随机排序、随机抽样、分层抽样在日常生活工作中非常常见,本文将以若干案例来介绍实现这几种常见需求的简单解决方案。
自带的 sample 函数是实现随机抽样最基础的函数,以此为基础,dplyr中的sample_n与sample_frac,以及doBy中的sampleBy函数能够实现更复杂的一些需求
案例1 皇帝的夜生活
对序列进行随机排序(洗牌)
皇帝有7个老婆,他想请作为内务总管的你帮他安排一下他的夜生活。他希望能够雨露沾均,一周七天没有人失宠也没有人得到过多的恩宠,而且希望能够顺序随机。
在这里,问题相当于对1~7七个数(一个向量)进行洗牌,使用sample函数即可很好的解决问题:
P.S. 如果皇帝无所谓雨露沾均,那么问题就相当于对1~7七个数进行 有放回的 七次抽样:
案例2 皇帝为什么找不到老婆呢?
对数据框随机抽样
每年的选秀结束了,但是皇帝没有选到心仪的人,于是怀疑手下是否有舞弊。于是让人整理了一份全部参加选秀的1000个人选的名单(dt),名单包括秀女的姓名、年龄、家庭住址、手机号等。然后,皇帝拜托作为内务总管的你去走一下基层,从中随机抽取5%的人上门或者打电话了解一下情况。
在这里,问题相当于从这个有1000行的数据框中随机抽取5%,即50行的数据。 dplyr中的sample_n与sample_frac函数实现对数据框的观测随机抽样与随机排序。其中,sample_n是按照个数取样;而sample_frac是按照比例取样。
sample_n(dt, 50) #从dt中随机取50个观测值 sample_frac(dt, 0.05) #从dt中随机取5%的观测值
案例3 皇帝为什么找不到老婆呢?
分层随机抽样接案例2. 作为内务总管的你了解到,选秀主考官似乎有点地域歧视、户口歧视,对来自南方与北方,对出身农村和城镇的秀女有着不同的标准,在出题上也有些为难人。因此,你决定从南方与北方、从农村和城镇各随机抽取相应比例的秀女进行调查。
在这里,问题相当于要完成一次分层的随机抽样,doBy包中的sampleBy函数能够很好的实现分层抽样。sampleBy的用法参考如下:
sampleBy(formula, frac = 0.1, replace = FALSE, data = parent.frame(), systematic = FALSE)
和doBy的其他函数一样,均需要使用formula来表示其中的关系。其仅含frac参数,需要按比例进行抽样
下图是假设的原始dt数据框,共有1000行
解决方案为:
sampleBy(formula = ~DiYu+HuKou, frac = .052, #因为1000*5% /4 =12.5 不是整数,因此向上调了一点 data = dt)
我们看一下结果:
可以看见,地域(DiYu)和户口(HuKou)的每一个处理下面均随机抽取了13个观测值。实现了分层随机抽样。
最后,留一个练习题~
练习题 给秀女们排座位
过年了,皇帝想邀请通过初试的40名秀女来宫中看春晚,宫里正好共有40个座位,8排5座。因为场地是平面的,皇帝希望身高高的秀女坐在后面,身高矮的坐在前面,但是又希望座位尽量随机。于是,你按照身高以矮到高将40人划分为8组,每一组占一排,在每一组内随机安排座位。那么,怎样实现呢?P.S. 每个秀女是数据框中的一行观测值,包含姓名、身高、出生地等变量,按照身高人为的分组为GROUP,需要对每个秀女生成一个新的变量“座位号”,满足上述条件
往期精彩:
公众号后台回复关键字即可学习
回复 爬虫 爬虫三大案例实战
回复 Python 1小时破冰入门
回复 数据挖掘 R语言入门及数据挖掘
回复 人工智能 三个月入门人工智能
回复 数据分析师 数据分析师成长之路
回复 机器学习 机器学习的商业应用
回复 数据科学 数据科学实战
回复 常用算法常用数据挖掘算法
本文由R语言中文社区 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。
以上所述就是小编给大家介绍的《【R语言实用技巧】随机排序、随机抽样与分层抽样》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Hive 的数据抽样
- R语言进行随机抽样sampling
- CSS实用技巧
- CSS实用技巧干货
- Python实用技巧,你不知道的7个好玩的Python技巧
- Kubernetes 实用技巧: 使用 ksniff 抓包
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Traction: A Startup Guide to Getting Customers
Gabriel Weinberg、Justin Mares / S-curves Publishing / 2014-8-25 / USD 14.99
Most startups end in failure. Almost every failed startup has a product. What failed startups don't have is traction -- real customer growth. This book introduces startup founders and employees to......一起来看看 《Traction: A Startup Guide to Getting Customers》 这本书的介绍吧!