SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 811|回复: 4
打印 上一主题 下一主题

[求助] 数据转换

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2004-5-7 11:15:53 | 只看该作者

[求助] 数据转换

如何用编程对给定的一列数产生另外一些数?
如给定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也可以,不知那位高人用此方法?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2004-5-10 13:33:06 | 只看该作者
不知道这个程序是不是你想要的?

[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]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2004-5-10 20:47:48 | 只看该作者
[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 立方和
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2004-5-14 21:07:08 | 只看该作者
<!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: --> 真是个学SAS的好地方
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2004-5-23 19:31:10 | 只看该作者

这样也行,不用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]
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-1-10 15:44 , Processed in 0.319392 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表