SAS中文论坛

标题: Proc format + macro求助 [打印本页]

作者: gogotiger    时间: 2014-5-13 04:53
标题: Proc format + macro求助
有个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;

谢谢!

作者: mono    时间: 2014-5-13 09:25
set一下,=一下, input一下 ,就行了吧,proc format,不改变数据的具体值,只是一层衣服。
作者: slash    时间: 2014-5-13 14:19
data new;
        set a(drop=var);
        var=val;
run;


这是不是你想要的结果?
作者: gogotiger    时间: 2014-5-13 21:47
本帖最后由 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;

作者: gogotiger    时间: 2014-5-13 22:04
mono 发表于 2014-5-13 09:25
set一下,=一下, input一下 ,就行了吧,proc format,不改变数据的具体值,只是一层衣服。 ...

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




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