楼主: zsdxcjh
1035 2

[统计软件与数据分析] 寻找表中的某个变量值,并比较所关联列值的大小 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

小学生

14%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
36 点
帖子
3
精华
0
在线时间
9 小时
注册时间
2015-10-19
最后登录
2024-4-18

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

关键词:变量值 Result RETAIN sorted RESUL 如何
沙发
啦啦啦13 发表于 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;
/*根据图形,判断二者关系*/

使用道具

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

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加JingGuanBbs
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 22:10