SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

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

请问:怎样做变量值的转换?

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2011-4-7 22:43:51 | 只看该作者

请问:怎样做变量值的转换?

请问,我想把数据的观测替换成一组得分值该用什么proc啊?比如我录入的是1,2,、、、160。我想转成5,6,2,、、、,5这样。SQL和iml都没用过。。。求推荐。。。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2011-4-7 23:53:22 | 只看该作者

Re: 请问:怎样做变量值的转换?

不是很清楚你的意思,你的得分转换有什么规则么?如果没有的话,用proc format吧可能
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2011-4-8 10:07:14 | 只看该作者

Re: 请问:怎样做变量值的转换?

有确定的得分的只是我要从1到160都做一个变换,莫非用proc format只能打160行吗。。。
我想有把他们变成一个向量的形式 这样不就可以a向量= b向量了么?
但是SAS里就不会做这个操作了。。
回复 支持 反对

使用道具 举报

0

主题

0

帖子

2

积分

新手上路

Rank: 1

积分
2
地板
发表于 2011-4-8 12:28:26 | 只看该作者

Re: 请问:怎样做变量值的转换?

[code:jozdk2uv]

%macro vformat(from, to,length,formatname, formattype);
data vformat;
array a(&length.) (&from);
array b(&length.)  (&to);
do i=1 to &length.;
  informat start   end   label $40. fmtname $32. type $1.;
  start=a(i);
  end=a(i);
  label=b(i);
  fmtname="&formatname.";
  type="&formattype";
  output;
end;
  keep start end label fmtname type;
run;
proc format library=work cntlin= vformat;run;
proc datasets;delete vformat;quit;
%mend;


%let from=1 2 3 4  ;
%let to= 11 22 33 44 ;
%let length=4;
%vformat(&from.,&to.,&length.,score, n);
   
data vv;
informat v1-v2   ;
format v1-v2 score.;
input v1-v2 ;
cards;
1 2
3  4
;
run;
proc print;
run;[/code:jozdk2uv]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2011-4-10 01:33:26 | 只看该作者

Re: 请问:怎样做变量值的转换?

佩服佩服, vicky1020 mm的答案收藏了。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-10 14:38 , Processed in 0.069570 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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