经管之家App
让优质教育人人可得
立即打开
全部版块
我的主页
›
论坛
›
数据科学与人工智能
›
数据分析与数据科学
›
SAS专版
如何实现这个要求的程序编写
楼主
harlon1976
2858
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专版
经管文库(原现金交易版)
行业分析报告
金融学(理论版)
学道会
休闲灌水
热门文章
【全美经典】离散数学
understanding climate change perceptions ...
中国数字经济规模数据、报告(2005-2023年) ...
【同程商旅】中国企业出海差旅研究报告
“十四五”能源发展成就报告
智算无界AIDC的超越和重构2025
当社科基础理论重大理论发现的时候
【10+指标】2007-2024年上市公司污染物排放 ...
2025年我国医药航空冷链发展现状与趋势展望 ...
是相信人工智能?还是否定人工智能?相信就 ...
推荐文章
AI狂潮席卷学术圈,不会编程也能打造专属智 ...
10月重磅来袭|《打造Coze/Dify专属学术智能 ...
最快1年拿证,学费不足5W!热门美国人工智能 ...
关于如何利用文献的若干建议
关于学术研究和论文发表的一些建议
关于科研中如何学习基础知识的一些建议 (一 ...
一个自编的经济学建模小案例 --写给授课本科 ...
AI智能体赋能教学改革: 全国AI教育教学应用 ...
2025中国AIoT产业全景图谱报告-406页
关于文献求助的一些建议
说点什么
分享
微信
QQ空间
QQ
微博
扫码加好友,拉您进群
各岗位、行业、专业交流群