SAS中文论坛

标题: [求助] 数据转换 [打印本页]

作者: shiyiming    时间: 2004-5-7 11:15
标题: [求助] 数据转换
如何用编程对给定的一列数产生另外一些数?
如给定3.5,如何产生
0.5+1.5+2.5+3.5
和0.5**2+1.5**2+2.5**2+3.5**2
和0.5**3+1.5**3+2.5**3+3.5**3?
比如说我给定一列数:2.65,8.9,7.89,4.67,1.5等等?
有人给我写了一个用IML变的程序,但是我觉得不用IML也可以,不知那位高人用此方法?
作者: shiyiming    时间: 2004-5-10 13:33
不知道这个程序是不是你想要的?

[code:13739]data test;
  input a;
  cards;
  3.5
  2.89
  1.5
  ;
  
run;

data test1(drop= b i);
  set test;
  b=int(a);
  do i= b to 0 by -1;
    c1= a-i;
        c2=        (a-i)**2;
        c3=(a-i)**3;
        output;
   end;
run;

data test2(keep= a sum1 sum2 sum3);
  set test1;
  retain sum1 sum2 sum3;
  a1=lag(a);
  if a ne a1 then
   do;
    sum1= c1;
        sum2= c2;
        sum3= c3;
        end;
  else if a = a1 then
    do;
        sum1= sum(sum1,c1);
        sum2= sum(sum2,c2);
        sum3= sum(sum3,c3);
        end;
  if a ne c1 then delete;
run;[/code:13739]



输出结果:
[quote:13739]Obs      a     sum1      sum2       sum3

1     3.50    8.00    21.0000    62.0000
2     2.89    5.67    12.7163    31.5938
3     1.50    2.00     2.5000     3.5000[/quote:13739]
作者: shiyiming    时间: 2004-5-10 20:47
[code:c1f98]data a(keep=a b c);
input a;
z=int(a);
y=a-z;
b=0;
c=0;
do i=0 to z;
b+(i+y)**2;
c+(i+y)**3;
end;
cards;
3.5
2.65
1.5
;run;[/code:c1f98]

b 平方和
c 立方和
作者: shiyiming    时间: 2004-5-14 21:07
<!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: --> 真是个学SAS的好地方
作者: shiyiming    时间: 2004-5-23 19:31
标题: 这样也行,不用int
[code:cfe6d]data test&#40;drop=x i&#41;;
input x@@;
x1=0;  x2=0;  x3=0;
do i=x to 0 by -1;
  x1+i;
  x2+i**2;
  x3+i**3;
end;
cards;
2 3 4&#46;4 5&#46;6
;
run;[/code:cfe6d]




欢迎光临 SAS中文论坛 (http://mysas.net/forum/) Powered by Discuz! X3.2