请选择 进入手机版 | 继续访问电脑版

SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 2523|回复: 4

Proc format + macro求助

[复制链接]

11

主题

49

帖子

267

积分

中级会员

Rank: 3Rank: 3

积分
267
发表于 2014-5-13 04:53:50 来自手机 | 显示全部楼层 |阅读模式
有个data a 如下是部分例子, var有28个distinct值(char),每个值有对应的不同的 ind(indicator)和不同的val(value),现在我想把var用 val 替换掉,用proc format的方式替换(之所以一定要用 proc format 是因为将来需要时使用会很简单). 可能要用到macro.

data a;
input var $ ind $ val;
cards;
V1 1 10
V1 2 15
V1 3 20
V1 4 25
V2 T 1
V2 M 2
V3 0 30
V3 1 31
V3 2 32
. . .
V28 C 1
V28 N 5
;
run;
最后的结果如下, 如果把新的var变成numeric就更好了。
data new;
var ($) ind $ val;
10 1 10
15 2 15
20 3 20
25 4 25
1 T 1
2 M 2
30 0 30
31 1 31
32 2 32
. . .
1 C 1
5 N 5
;
run;

谢谢!
回复

使用道具 举报

2

主题

41

帖子

318

积分

中级会员

Rank: 3Rank: 3

积分
318
发表于 2014-5-13 09:25:05 | 显示全部楼层
set一下,=一下, input一下 ,就行了吧,proc format,不改变数据的具体值,只是一层衣服。
回复 支持 反对

使用道具 举报

10

主题

39

帖子

1049

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1049
QQ
发表于 2014-5-13 14:19:20 | 显示全部楼层
data new;
        set a(drop=var);
        var=val;
run;


这是不是你想要的结果?
回复 支持 反对

使用道具 举报

11

主题

49

帖子

267

积分

中级会员

Rank: 3Rank: 3

积分
267
 楼主| 发表于 2014-5-13 21:47:28 来自手机 | 显示全部楼层
本帖最后由 gogotiger 于 2014-5-13 21:51 编辑

不是,我希望用proc format + macro 来实现。之所以要用proc format是因为将来可以很简单的运用。比如说有个原始数据的变量里面含有部分var里的值。
e.g.
data two;
input v1 $ v2 $......;  /*v1,v2,...are the values of var in data a*/
cards;
2 T ....
1 M ....
....
;
run;
回复 支持 反对

使用道具 举报

11

主题

49

帖子

267

积分

中级会员

Rank: 3Rank: 3

积分
267
 楼主| 发表于 2014-5-13 22:04:52 | 显示全部楼层
mono 发表于 2014-5-13 09:25
set一下,=一下, input一下 ,就行了吧,proc format,不改变数据的具体值,只是一层衣服。 ...

'proc format,不改变数据的具体值'这个倒是真的,原来是想先把值用proc format变过来,然后改变data并重新用新变量赋值,这个想法是源于一篇未发表的paper, 看来并不这么简单,得想其他办法.
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-17 07:38 , Processed in 0.133511 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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