首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

R语言在教育质量监测随机抽样中的应用

最近一直在研究R语言的抽样工作,抽样看似简单,发现编程编起来十分麻烦。我要在83所学校中抽取3个班级,并在这3个班级中抽取34名男生和34名女生。理论上,我只要按照这个思路去做就行,但是实际上问题挺复杂。首先,83所学校不是所有的学校有3个班级,其次,83所学校的班级名并不一致,比如说有的是1班,2班,3班,有的是101,102,103,还有的是根据专业来分班,所以在编程时必须考虑如何解决这些问题,最后,我们抽取的班级人数可能没有34人,有的学校规模比较小,可能只有一两个班级,学生总数达不到要求。在编程前期,班级名的事情难住了我,查阅了五本R语言的书籍,花了3天时间,终于解决了,用了两个循环,把另外的问题也解决,大功告成!

这是原始数据:

最后的结果

下面是代码,可以根据自己的需求修改代码。

library("xlsx")

setwd("I:\\工作\\2018年")

dat3=read.delim("clipboard")

name3=read.delim("clipboard")

a=list(0)

b=list(0)

c=list(0)

level=list(0)

for(i in 1:83) else{

level[[i]]=sample(levels(a[[i]]$班级),nlevels(a[[i]]$班级))

b[[i]]=a[[i]][is.element(a[[i]]$班级,sample(levels(a[[i]]$班级),nlevels(a[[i]]$班级))),]

}

}

for(i in 1:83) {

if(sum(b[[i]]$学校编号==i)>34){

c[[i]]=b[[i]][sample(1:nrow(b[[i]]),34,replace =FALSE ),]

}else{

c[[i]]=b[[i]][sample(1:nrow(b[[i]]),sum(b[[i]]$学校编号==i),replace =FALSE ),]

}

write.xlsx(c[[i]],file=paste0( name3$school[[i]], "抽样的1.xlsx"),row.names = FALSE)

}

欢迎批评指正!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181030G0M3TC00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券