经管之家App
让优质教育人人可得
立即打开
全部版块
我的主页
›
论坛
›
数据科学与人工智能
›
数据分析与数据科学
›
SAS专版
如何实现这个要求的程序编写
楼主
harlon1976
2968
15
收藏
2010-07-24
悬赏
50
个论坛币
未解决
假设现在又数据集A,只含有变量X,观测个数为10个,首先采用有放回抽样的方式抽取10个观测,(当然有些观测可能多次被抽取,有的可能一次都没有被抽取)形成数据集为A1,把这个过程进行比如20次,依次吧这些数据集记为A2,A3.....A20。现在的要求是:如何找出这20个数据集中不包含某个观测,比如说就A1而言,如何判断他是否含有第1、第2。。。 第10个观测,对这20个都进行判断,然后把不包含第一个观测的数据集合在一起形成一个新的数据集,把不包含第二个观测的数据集合在一起形成一个新的数据集,等等一直进行到把不包含第10个观测的数据集合在一起形成一个新的数据集。谢谢指教。
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
全部回复
沙发
hguanyu
2010-7-24 21:44:14
!!!!!!!!!!!!!!!!!!!
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
藤椅
jingju11
2010-7-24 23:22:03
复制代码
没有在sas上试运行,如果有错误可以改改。
思路是:把原始数据重复20次,重复的次序可用为抽样的分层。所以经过放回性的分层抽样(层数20),即相当于对原始数据抽样20次。在抽样输出中,不包含某某观测,等于每一层中包含其他的观测的数目为10.比如如果数据不包括观测1,即为包括2,3, ---, 10 的观测数为总观测数(此为10)。两个宏只是方便书写,没有重复运算的功能。最后的数据是result1.。。result10, 其中result1为不包括原观测1的数据。。。其中,s为抽样顺序(层), _n为原观测的顺序标记,x即为原观测。
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
板凳
crackman
2010-7-25 00:34:59
data crackman;
do i=1 to 10;
x=ranuni(10);
output;
end;
format x f8.2;
run;
%macro crackman1;
%do n=1 %to 10;
proc sql noprint;
select _name_ into:name separated by " " from tb where col&n.=.;
quit;
data B&n.;
set &name.;
run;
%end;
%mend crackman1;
%macro crackman(seed);
%do k=1 %to 20;
proc surveyselect data=crackman method=urs n=10 seed=%eval(&seed.*&k.) out=A&k. noprint;
run;
proc sort data=A&k. out=A&k.;
by i;
run;
data B&k.;
merge crackman(drop=x) A&k.(rename=(x=A&k.) drop=NumberHits);
by i;
run;
%end;
data B;
merge b1-b20;
by i;
run;
proc transpose data=B(drop=i) out=TB;
var _all_;
run;
%crackman1;
%mend crackman;
%crackman(55);
/*对程序有异议的欢迎交流*/
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
报纸
crackman
2010-7-25 00:35:14
答案在B1-B20里面
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
地板
jingju11
2010-7-25 00:45:20
crackman 发表于 2010-7-25 00:35
答案在B1-B20里面
应该是10个数据集啊
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
点击查看更多内容…
7楼
crackman
2010-7-25 01:10:35
是B1-B10
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
8楼
crackman
2010-7-25 01:10:52
data crackman;
do i=1 to 10;
x=ranuni(10);
output;
end;
format x f8.2;
run;
%macro crackman1;
%do n=1 %to 10;
proc sql noprint;
select _name_ into:name separated by " " from tb where col&n.=.;
quit;
data C&n.;
set &name.;
run;
%end;
%mend crackman1;
%macro crackman(seed);
%do k=1 %to 20;
proc surveyselect data=crackman method=urs n=10 seed=%eval(&seed.*&k.) out=A&k. noprint;
run;
proc sort data=A&k. out=A&k.;
by i;
run;
data B&k.;
merge crackman(drop=x) A&k.(rename=(x=A&k.) drop=NumberHits);
by i;
run;
%end;
data B;
merge b1-b20;
by i;
run;
proc transpose data=B(drop=i) out=TB;
var _all_;
run;
%crackman1;
%mend crackman;
%crackman(55);
方便起见改成C1-C10
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
9楼
soporaeternus
2010-7-25 02:28:51
复制代码
最后根据b把id转化为与原始数据,再分别按d中的i输出下,参考jinju11的输出......
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
10楼
jingju11
2010-7-25 03:11:19
sorry.没有sas我是无法读懂大家的程序。料想思路和方法虽然不同,但总是殊途同归。
我想,这里的放回性抽样,也类同于:产生200个1到10的随机数,每十个一组,对应了要求的A1,。。, A20.
复制代码
其中的_obs是数据中的观测次序 sample 是抽样的次序。然后附带上x(假设原数据YourData的观测次序已经存在,也设为_obs)
复制代码
然后依据输出规则输出数据
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
11楼
harlon1976
2010-7-25 06:40:21
9#
soporaeternus
如果要把最终的变量X的取值表示出来,我使用下面的程序:
data d1;
set d;
rename getid=id;
proc sort data=d1 out=e1;
by id;
data hboutcome;
merge b e1;
by id;
run;
这样的程序应该是对的吧,请指示一下!
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
12楼
harlon1976
2010-7-25 06:41:52
谢谢各位高手的及时指教,没想到一个晚上本论坛上经常出现几个高手都来了,并给出了解决问题的办法,我要认真看看下,谢谢各位了。
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
13楼
soporaeternus
2010-7-25 08:44:41
11#
harlon1976
没有开sas测,但是应该就是这样
把id替换成x,由于id和x一一对应,故可以用merge
10#
jingju11
就是这个意思,把具体数字转化为自然数就是为了直接用对0-1随机数的拉伸来表示对于具体数字的取舍......
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
14楼
jingju11
2010-7-25 09:21:05
复制代码
YourData has to contain two variables of X and _obs (record order, similiar to _n_).
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
15楼
zhentao
2010-7-25 15:17:59
了不起。受教。
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
16楼
jingju11
2010-7-26 21:02:03
14#
jingju11
非常有趣。从结果来看,在10个数中,随机放回性选出10, 某个数字被选不上的概率是35%。比以为的要大啊。
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
相关推荐
请教一个程序编写问题
SAS 删除出现在另一个数据集中的变量
sas 如何实现快速筛选?
变量中加入分隔符
如何根据不同条件生成数据集?
如何实现给很多数据集增加子字段
SAS两个数据集合并
sas 匹配有重复值的两个数据集,如何实现?
sas中如何实现数据集做差
如何实现数据的交叉匹配?
栏目导航
SAS专版
哲学与心理学版
休闲灌水
商学院
SPSS论坛
宏观经济学
热门文章
科研时间70%耗在“下载-复制-粘贴”?零代码 ...
精准匹配,菁英相伴--经管之家单身俱乐部, ...
我该如何记住你?智能体记忆系统的演化之路
2026年Agent领域十大趋势判断
蔡定创《信用价值论》中货币需求新公式研究
202601-中国智能驾驶行业趋势白皮书
到2032年全球RJ11连接器市场规模将接近12.4 ...
油罐车加油系统,全球前10强生产商排名及市 ...
无上高明的“无为”“无住”哲学在传统中国
现代数学基础 现代极限理论及其在随机结构中 ...
推荐文章
2026JG学术冬训营:从Stata初高到Python机器 ...
【必看】【本版版规,欢迎发悬赏贴求助】
26年寒假天津站|Gemini论文写作&数据分析 ...
关于如何利用文献的若干建议
关于学术研究和论文发表的一些建议
关于科研中如何学习基础知识的一些建议 (一 ...
一个自编的经济学建模小案例 --写给授课本科 ...
AI智能体赋能教学改革: 全国AI教育教学应用 ...
2025中国AIoT产业全景图谱报告-406页
关于文献求助的一些建议
说点什么
分享
微信
QQ空间
QQ
微博
扫码加好友,拉您进群
各岗位、行业、专业交流群