R语言随机抽样及分层抽样

问题

> dim(ml_data)
[1] 201253     11
  • 场景:20万行数据中,抽取每个月中的任意一天的数据,即,2019-9-6/2019-9-7/2019-9-8…
    在这里插入图片描述

1、计算层次个数

  • dplyr包中count函数计算出每天的数据量,然后dim查看数据列346行,346个层次,346天。
> bb <- count(ml_data,date)
> > head(bb)
      date    n
1 20190906  568
2 20190907 1130
3 20190908  514
4 20190909  529
5 20190910  568
6 20190911  114
> dim(bb)
[1] 346   2

2、固定随机提取

  • set.seed(1)固定随机取数
  • sampling包中strata函数
  • 合并日期date向量下抽取,时间缩短
strata(data,stratanames=NULL,size,
       method=c("srswor","srswr","poisson","systematic"),
       pik,description=FALS)
#stratanames: 进行分层所依据的变量名称。
#size: 各层中要抽出的观测样本数。
#method: 选择4中抽样方法,分别为无放回、有放回、泊松、系统抽样,默认为srswor。
> set.seed(1)
> #注意size,每层抽取1个数,如果两个或者三个。。。
> sample_day <- strata(ml_data,stratanames = c("year","month","day"),size = rep(1,346),method="srswor")
> head(sample_day)
     year month day ID_unit         Prob Stratum
129  2019    09  06     129 0.0017605634       1
1498 2019    09  07    1498 0.0008849558       2
2207 2019    09  08    2207 0.0019455253       3
2683 2019    09  09    2683 0.0018903592       4
3040 2019    09  10    3040 0.0017605634       5
3323 2019    09  11    3323 0.0087719298       6
  • 两个相同
> set.seed(1)
> sample_day <- strata(ml_data,stratanames = "date",size = rep(1,346),method="srswor")
> head(sample_day)
         date ID_unit         Prob Stratum
129  20190906     129 0.0017605634       1
1498 20190907    1498 0.0008849558       2
2207 20190908    2207 0.0019455253       3
2683 20190909    2683 0.0018903592       4
3040 20190910    3040 0.0017605634       5
3323 20190911    3323 0.0087719298       6

3、随机抽样

sample(x, size, replace = FALSE, prob = NULL)
x:为向量
size:为样本容量
replace:表示是否为有放回的抽样,是一个逻辑值,默认为FALSE,即默认为无放回抽样;
prob:为权重向量,即x中元素被抽取到的概率,是一个取值0~1的向量,其长度应该与x的长度相同。

  • 举例
> sample(1:20, 5)
[1] 19 16 15 20  1
> sample(1:20, 5)
[1] 19 14  6 11  8
> set.seed(2)
> sample(1:20, 5)
[1] 15  6 19  8  1

看完如果对你有帮助,感谢点赞支持!

如果你是电脑端,看到右下角的 “一键三连” 了吗,没错点它[哈哈]

在这里插入图片描述

  • 13
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值