作者west1996 (焦了六年变脆了)
看板Statistics
标题Re: [问题] sas 有关if的问题,拜托高手帮忙
时间Tue Nov 24 15:47:08 2009
data temp;
input t @@;
cards;
1 2 3 4 5 6 7 8 9
;
run;
data test(keep=print);
length print $50;
set temp;
if t<2 then
do;
s1=t*t;
print='t<2, s1='|| left(s1);
end;
else if 2<=t<=4 then
do;
s1=t*t ;
s2= s1*t;
print='2<=t<=4, s1=' || trim(left(s1)) || ' ,s2=' || trim(left(s2)) ;
end;
else
do;
s1=t*t ;
s2= s1*t;
s3=s2*t;
print='t>4, s1=' || trim(left(s1)) || ' ,s2=' ||
trim(left(s2)) || ' ,s3=' || trim(left(s3));
end;
run;
---
不确定这是不是你想要的东西XD
test档里面的东西就是平常c print出来的东西
s1 s2 s3後面的式子自行修改
然後print的东西空格逗号什麽的排版再微调一下就行了
如果t不是要显示t而是想要显示1~9的话把t像s1 s2 s3那样切开来串就行了
※ 引述《ejiuhp (FUTURE)》之铭言:
: 因为我看了sas的help说明,还是无法将我想表达的写成sas,但我要表达的内容用c语言写
: 是下面那段,我想把他写成sas语言要怎麽写?
: 其实我要表达的东西就是有s1 s2 s3 三个式子,而我想要在
: if t<2 then do s1 ;
: if t>=2 and t<4 then do s1 s2 ;
: if t >=4 then do s1 s2 s3;
: 然後都要print 出来
: t<2
: t<2
: t<2
: 2<t<4
: 2<t<4
: 2<t<4
: t>4
: t>4
: .
: .(t为0到9)
: 但我不会写,
: 以下为c语言写法不知道各位高手会不会改成sas。
: for ( t =0 ; t<=9 ; t++ ){
: if ( t< 2){
: s1== (1+((b1*(X11t-127.3)))*((1-exp(-(p+q)*t)/1+(p/q)*exp(-(p+q)*t
: ))*m1*(1-(1-exp(-(p+q)*(t-2)))/(1+(p/q)*exp(-(p+q)*(t-2))))))
: printf("t<2, s1= %d",s1)
: };
: else if ( 2<=t< =4){
: s2 = (1+((b1*(X12t-67.8)))*((1-exp(-(p+q)*(t-2)))/(1+(p/q)*exp(
: -(p+q)*(t-2)))*(m2+m1*(1-exp(-(p+q)*t)))/(1+(p/q)*exp(-(p+q)*t))
: *(1-(1-exp(-(p+q)*(t-4)))/(1+(p/q)*exp(-(p+q)*(t-4))))));
: printf("2<t<4, s1= %d ,s2=%d,s1,s2); ...
: };
: else
: s1== (1+((b1*(X11t-127.3)))*((1-exp(-(p+q)*t)/1+(p/q)*exp(
: -(p+q)*t))*m1*(1-(1-exp(-(p+q)*(t-2)))/(1+(p/q)*exp(-(p+q)*(t-2))))));
: s2 = (1+((b1*(X12t-67.8)))*((1-exp(-(p+q)*(t-2)))/(1+(p/q)*exp(-(p+q)*
: (t-2)))*(m2+m1*(1-exp(-(p+q)*t)))/(1+(p/q)*exp(-(p+q)*t))*
: (1-(1-exp(-(p+q)*(t-4)))/(1+(p/q)*exp(-(p+q)*(t-4))))));
: S3 = (1+((b1*(X13t-63.7)))*((1-exp(-(p+q)*(t-4)))/(1+(p/q)*
: exp(-(p+q)*(t-4))))*(m3+((1-(1-exp(-(p+q)*(t-2))))/(1+(p/q)*
: exp(-(p+q)*(t-2)))))*(m2+m1*(1-exp(-(p+q)*t)/(1+(p/q)*exp(-(p+q)*t)))));
: printf("t>4, s1= %d ,s2=%d,s3=%d,s1,s2,s3);
: }
: };
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.109.40.59
※ 编辑: west1996 来自: 140.109.40.59 (11/24 15:50)
1F:推 ejiuhp:请问S1 S2 S3是补在t*t 还是补在s1*t 那个s1里呢? 11/24 16:43
2F:→ west1996:t*t 因为计算识落落长看不懂,所以我随便用t的平方三方 11/24 17:10
3F:→ west1996:去代替算式了,後面print後的不用改,除非嫌排版不够好要 11/24 17:11
4F:→ west1996:作微调才需要动到 11/24 17:11
5F:→ west1996:喔s1*t s2*t也是要改成对应的式子 11/24 17:12