全部版块 我的主页
论坛 提问 悬赏 求职 新闻 读书 功能一区 悬赏大厅
1247 2
2016-05-05
悬赏 5 个论坛币 未解决
请教大神,下表如何用SAS编程:如果result1=1,碰到的第一个result2=1,就比较result1=1时的x与result2=1时的y大小,并将结果放在新新变量z下。如果result1=1和result2=1在同一行,则不进行比较,继续找下一个result2=1,并进行result1=1时的x与result2=1y 的比较。
然后再次找下一个result1=1,重复之前的步骤.之前有网友替我用SAS编程,但有些数据筛选不出来,如2014年10月27日,即result1=1此时result2=0,直到找到result2=1时所对应的y.比如这时我要的数据就是result1=1时的x,为9.23,result2=1时所对应的y为9.6,然后再找符合这样条件的数据





data data2;
        set data1;*data1为原始数据
        retain x1 0 y1 0;
        if result1=1 then x1=x;
        if result2=1 then y1=y;
        n1+result1;
run;
data data3;
        set data2;
        by n1 notsorted;
        if ^first.n1 & n1^=0 & result1=0 & result2=1 then do;
                if x1<y1 then z='<';
                    else if x1=y1 then z='=';
                    else z='>';
        end;
run;proc sort data=data3(where=(z^='')) out=nodups1 nodupkey;
        by n1;
run;

123.xls

大小:107.5 KB

 马上下载

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-5-6 15:12:00
/*第1问*/
data anova;
input group $ @;
do i=1 to 4;
input x@@;
output;
end;
cards;
B13.52.62.01.4
B22.32.01.50.8
B32.01.91.20.3
;
proc anova;
class group;
model x=group;
means group/lsd;
run;
/*第2问*/
data score;
input no sex $ math phyeng;
cards;
9901F989391
9902M868285
9903M879465
9904F899078
9905F969882
9906M928789
;
run;
/*(1)*/
libname new "D:\user";
data new.newscore;
set score;
run;
/*(2)*/
proc means data=score;
var math phy eng;
output out=result;
run;
/*(3)*/
data result1;
set score;
sum=sum(math,phy,eng);
proc sort;
by sum;
run;
/*(4)*/
data A B;
set score;
if sex='M' then output A;
else output B;
run;
proc print data=A;
proc print data=B;
run;
/*第三问*/
data reg;
input x1-x3 y;
cards;
14 16 59 5.87
27 13 27 5.58
31 11 94 5.83
20 15 64 4.71
24 14 167 5.59
19 13 340 3.85
30 13 40 5.52
21 12 122 5.3
29 13 90 5.65
30 14 85 4.97
41 13 120 5.31
;
run;
/*(1)*/
proc reg data=reg;
model y=x1-x3/ sle=0.10 selection=forward;
model y=x1-x3/sls=0.10 selection=backward;
model y=x1-x3/sls=0.10 sle=0.10 selection=stepwise;
ods output selparmest=para;/*看参数估计,看三种方法模型是否相同,看每个模型的最
后一次参数估计,如果不同,选取R值最高的作为最优模型*/
run;
quit;
/*(2)*/
/*上述三个模型最终建立模型相同 y=bt0+bt3*x3 */
proc nlin data=reg;
parameters bt3=;/*参数初值设置刚才最优模型的参数估计值*/
model y=bt3*x3;/*或者写非线性模型*/
run;
/*第4问*/
data press1;
input press@@;
cards;
0.3 0.5 0.7 0.9 1.1 1.3 1.5 2.0
;
data press2;
input size@@;
cards;
11.28 9.82 8.76 7.26 7.92 7.26 8.40 6.04
;
data press;
merge press1 press2;
run;
proc gplot data=press;
symbol i=spline v=dot;
plot size*press;
label size="粒子大小" press="压力";
run;
quit;
/*根据图形,判断二者关系*/
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-5-6 22:12:46
啦啦啦13 发表于 2016-5-6 15:12
/*第1问*/
data anova;
input group $ @;
谢谢 啦啦啦13,辛苦了,你把我的原始文件下载下来,我倒不是建模那么高深,只是把符合条件的值挑出来.你帮我看看2014年10月27日的数据为什么跑不出来,在线等.
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群