最近需要用到sas来对我的一个数据进行1:1抽样,我在网上找了些资料看,没怎么看懂,于是自己想了一个思路来编写这个抽样程序,现分享给大家。
首先,数据库js如下,含有唯一变量ID,需要匹配的变量 shcool、grade、class和age,case是定义变量,1是病例,0是对照。抽样要求school、grade、class要相同,age相差不超过2岁。
先说我的思路,首先是生成病例库和对照库, 然后依次从病例库中抽选1条,然后按照条件从对照库选择符合的样本组成待抽选库,然后从这个待抽选库中随机抽选1条,最后把抽出的这条从对照库中剔除,然后重复上述过程直到每条病例都匹配完成,最后合并抽出来的样本。
代码如下:
最后,说说程序缺陷,首先是运行效率低,因为是循环语句反复生成数据库,病例较多时,运行肯定慢; 其次未考虑到匹配未成功的情况;第三,程序还是有点啰嗦。 仅供参考。