美文网首页
R-例解随机数和随机抽样

R-例解随机数和随机抽样

作者: 睿睿爱汪汪也爱喵喵 | 来源:发表于2022-05-15 21:45 被阅读0次

    问题:

    在2018年的调查中,我们需要对499个样本重新赋值,故从10001到99999的池子中随机抽了499个数,生成了新的随机码;进一步,在2020年,我们同样需要在10001到99999的池子中随机抽100个数,同时这100个数不得与之前的499个数重复。

    我们如何利用R语言实现以上需求呢?

    思路:

    图1 抽样示意图

    代码与注释:

    library(dplyr)

    #No.1 建立初始抽样池

    stage1<-data.frame(matrix( nrow = 90000, ncol = 1))

    stage1[1:90000,1]<-row(stage1)+10000-1

    colnames(stage1)<-"V2"

    #No.2 从初始抽样池中无放回地抽499个样本

    set.seed(499)

    test1=as.data.frame(sample(10000:99999,499,replace=FALSE))

    colnames(test1)<-"V1"

    #No.3 在R中实现EXCEL中的VLOOKUP功能,生成一个单列的数据框,前1至499行储存第1次抽中的样本,后500至90000行存放二阶段抽样池,并左右拼接前三步生成的数据集

    stage2<-test1 %>%right_join(stage1, by=c('V1'='V2'))

    colnames(stage2)<-"V3"

    pool<-data.frame()

    pool<-cbind.data.frame(stage1,rbind(test1,matrix( nrow = 89501, ncol = 1)),stage2)

    #No.4 将存放数据的数据框的第4列的后500至90000行存放二阶段抽样池,考虑到sample函数的功能,我们新建一列序号列,存放从1到89501的自然序列,作为二阶段抽样池对应的辅助序列

    pool[500:90000,4]<-pool[500:90000,3]

    pool[500:90000,5]<-pool[500:90000,1]-499

    #No.5 在二阶段抽样池的辅助序列中无放回地随机抽200个数,同时利用右连接功能,找出这200个数在二阶段抽样池中对应的样本,即第2次抽样的样本,并将其储存在数据集里。

    ######set.seed()的含义是设立种子,使得程序可重复,种子数可为任意整数

    set.seed(4)

    test2=as.data.frame(sample(10000:99500,200,replace=FALSE))

    colnames(test2)<-"V6"

    test2_true<-test2 %>%right_join(pool[4:5], by=c('V6'='V5'))

    pool[500:699,6]<-test2_true[1:200,2]

    pool[500:699,7]<-test2_true[1:200,2]

    #No.6 合并(上下拼接)第1次抽样和第2次抽样的结果,并生成三阶段抽样池。以后还可以在stage 3的基础上,继续抽样

    test2_true1<-as.data.frame(test2_true[1:200,2])

    colnames(test1)<-"sam1_2"

    colnames(test2_true1)<-"sam1_2"

    sample_1_2<-rbind(test1,test2_true1)

    stage3<-sample_1_2%>%right_join(hhhh, by=c('sam1_2'='V2'))

    pool[8]<-stage3

    #No.7 简化池子:第1列为初始抽样池,第2列为第1次抽样完的结果,第3列为第2次抽样完的结果

    sampling<-cbind.data.frame(pool[1],pool[3],pool[8])

    colnames(sampling)<-c("pool","sample18","sample20")

    参考文章:

    1、R-例解如何用函数和循环减少代码的重复(for循环和while循环)。链接:R-例解如何用函数和循环减少代码的重复(for循环和while循环) - 简书 (jianshu.com)

    相关文章

      网友评论

          本文标题:R-例解随机数和随机抽样

          本文链接:https://www.haomeiwen.com/subject/ywzbyrtx.html