SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1643|回复: 12
打印 上一主题 下一主题

帮忙:表格制作问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2009-10-29 10:24:14 | 只看该作者

帮忙:表格制作问题

id            value1                  使得,value2
001           0.1                                0.2
001           0.2                                 0.2
001           0.3                                0.2
002           0.4                                0.6
002           0.5                                0.6
002           0.6                                0.6
002           0.7                                0.6
003           0.8                                0.9
003           0.9                                0.9
目的:使id=001号的value2 都等于  001号value1的第二条观测的值
      使id=002号的value2 都等于  002号value1的第三条观测的值
      使id=003号的value2 都等于  003号value1的第二条观测的值
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2009-10-29 10:37:09 | 只看该作者

Re: 帮忙:表格制作问题

请问你的目的是什么呢?如果只是为了这个数据,下面的程序如何:
data new;
set old;
if id ='001' then value2 =0.2;
else if id ='002' then value2 =0.6;
esle value2 =0.9;
run;

无有错误提示,告成!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2009-10-29 10:42:00 | 只看该作者

Re: 帮忙:表格制作问题

目的已写在上面的文字中,当然不是上面简单的数据
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2009-10-29 10:44:33 | 只看该作者

Re: 帮忙:表格制作问题

那我那条要求没有满足呢?说说看嘛。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2009-10-29 10:48:02 | 只看该作者

Re: 帮忙:表格制作问题

”使id=001号的value2 都等于 001号value1的第二条观测的值“
不能把value2=0.2 直接赋上去阿,要调”001号value1的第二条观测的值“
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2009-10-29 14:35:22 | 只看该作者

Re: 帮忙:表格制作问题

我做了一个不过不大好 有一个地方不知道怎么解决
data a;
input id  value1;
value2=value1;
cards;
001 0.1
001 0.2
001 0.3
002 0.4
002 0.5
002 0.6
002 0.7
003 0.8
003 0.9
;

proc sort data=a out=b;
by id;
data b1;
set b;
if id=001 then count1+1;
else if id=002 then count2+1;
else if id=003 then count3+1;
proc transpose data=b out=b1;
run;
data c(drop=i);
set b1;
array co(*) col1-col9;
if _n_=3 then do;
do i=1 to 9;
if i<=3 then co(i)=co(2);
else if i<=7 then co(i)=co(3+3);
else   co(i)=co(7+2);  
end;
end;
proc transpose data=c out=b2;
proc print data=b2(drop=_name_);run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2009-10-29 14:38:57 | 只看该作者

Re: 帮忙:表格制作问题

这是我做的另一种方法 但还没完善 做不下去了 高手帮忙指点指点 初学sas 献丑了
data a;
input id  value1;
value2=value1;
cards;
001 0.1
001 0.2
001 0.3
002 0.4
002 0.5
002 0.6
002 0.7
003 0.8
003 0.9
;
data a1 a2 a3;
set a;
if id=001 then output a1;
else if id=002 then output a2;
else if id=003 then output a3;
%macro aa(par1,par2,n,m,t);

proc transpose data=&par1 out=&par2;
var id value1 value2;
run;
data b(drop=i);
set &par2;
array co(&n) col1-col&n;
if _n_=&m then do;
do i=1 to &n;
co(i)=co(&t);
end;
end;
proc transpose data=b out=c;
run;
proc print data=c(drop=_name_);
run;
%mend aa;
%aa(a1,aa1,3,3,2)
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2009-10-29 17:08:41 | 只看该作者

Re: 帮忙:表格制作问题

[code:1dkbm1rx]data a;
input id value1 ;
cards;
001 0.1
001 0.2
001 0.3
002 0.4
002 0.5
002 0.6
002 0.7
003 0.8
003 0.9
;
run;

data b;
set a;
by id;
if first.id then count=0;
count+1;
if id='001' and count=2 then output;
if id='002' and count=3 then output;
if id='003' and count=2 then output;
rename value1=value2;
drop count;
run;

data c;
merge a b;
by id;
run;

proc print;run;[/code:1dkbm1rx]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
9#
 楼主| 发表于 2009-10-29 19:58:28 | 只看该作者

Re: 帮忙:表格制作问题

thinkhao的真简介呀 学习中 我有很多语句用的还不会用 又学会了一个rename语句
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
10#
 楼主| 发表于 2009-10-29 21:20:12 | 只看该作者

Re: 帮忙:表格制作问题

并不是我自满,我的程序至少是最简洁的。一目了然。
而且我觉得上面的程度没有做的更多更好。
我就不明白为什么一眼都看得出来的东西,还有把它倒过来倒过去的。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-6 04:36 , Processed in 0.136849 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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