l*****o 发帖数: 61 | 1 请问如何用SAS 做到如下:我有一组数据有3个变量,company, year, product. 一共
有4个company (a, b, c, d), 每个company有4年,每个company每年都有好多product
但是编号混乱。我想生成另外一个变量,每个产品都有编号(从1到n, n为第n个产品)
。相同的农场不同的年编号一样,但是不同的农场即使产品相同也不给相同的编号,而
是继续向下数数。比如:
company year product newvar
a 1 5 1
a 1 8 2
a 1 9 3
a 1 13 4
a 2 5 1
a 2 8 2
a 2 9 3
a 2 13 4
b 1 3 5
b 1 5 6
b 1 5.1 7
b 1 8 8
b 2 3 5
b 2 5 6
b 2 5.1 7
b 2 8 8
.
.
.
n
谢谢! | l****u 发帖数: 529 | 2 proc sort data=one;
by year company product;
run;
data two;
set one;
by year;
retain count;
if first.year then count=1;
count+1;
run; | G********L 发帖数: 12 | 3 可能要这样才能满足楼主的要求。
proc sort data=one;
by company year product;
run;
data two (drop=count temp1 temp2);
set one;
by year notsorted;
retain count temp1 temp2;
if _n_=1 then do;
temp2=0;
temp1=company;
end;
if temp1 NE company and first.year then temp2=count;
if first.year then count=0;
count+1;
newvar=temp2+count;
temp1=company;
run;
【在 l****u 的大作中提到】 : proc sort data=one; : by year company product; : run; : data two; : set one; : by year; : retain count; : if first.year then count=1; : count+1; : run;
| l*****o 发帖数: 61 | 4 非常非常感谢!可以了。
还有一个问题:如果有一些product在某些年没有,而每年又都有新的products加入,
所以需要确保相同的product在不同的年有相同的编号(newvar),怎么办呢? |
|