所以我一直试图找出如何在SAS中重命名ID变量(我制作了一个虚拟数据集来尝试这个,见下文)
DATA trial;
input hno $ y;
datalines;
a 1
a 2
a 3
a 4
b 3
b 5
cd 5
cd 6
cd 1
;
run;
我需要做的就是拥有所有a=1
,b=2
,cd=3
等等,但代码需要转移到数据集,其中包含大约30,000个观察结果不同的ID。我一直在玩first.id和last.id,但绝对没有用。有人可以帮忙吗?
提前谢谢!
EDIT
所以为了澄清,我需要产生输出的代码:
a 1 1
a 2 1
a 3 1
a 4 1
b 3 2
b 5 2
cd 5 3
cd 6 3
cd 1 3
其中第三列是ID变量,每个唯一的hno值增加一个
答案 0 :(得分:2)
如果数据按HNO排序,则会将HNO编码为索引。 SAS中的RENAME通常是指变量,数据集等对象。
DATA trial;
input hno $ y;
datalines;
a 1
a 2
a 3
a 4
b 3
b 5
cd 5
cd 6
cd 1
;
run;
data trial2;
set trial;
by hno;
if first.hno then id + 1;
run;
proc print;
run;
如果您的输入未按照PROC SUMMARY创建并索引ID数据集,并使用KEYed SET添加ID。
DATA trial;
input hno $ y @@;
datalines;
a 1 a 2 b 3 b 5 cd 5 cd 6 a 3 a 4
cd 1
;
run;
proc summary nway data=trial;
class hno;
output out=index(drop=_type_ _freq_ rename=(_level_=id) index=(hno)) / levels;
run;
proc print;
run;
data trial2;
set trial;
set index key=hno/unique;
run;
proc print;
run;
答案 1 :(得分:0)
您也可以尝试format
proc format;
value $ cn
'a' = 1
'b' = 2
'cd' = 3
;
run;
DATA trial;
input hno $ y;
*format hno $cn.;
id = put(hno, $cn.);
datalines;
a 1
a 2
a 3
a 4
b 3
b 5
cd 5
cd 6
cd 1
;
run;