B**Y 发帖数: 786 | 1 有这样一组数据
day x
1 0
1 0
1 0
2 0
2 1
2 1
2 0
2 0
3 1
3 0
想求一个新的变量y :每一天中在x第一次出现1之后有当天还有多少个记录(包括第一
次出现1的那个记录)。所以上面的数据得到的y就是
day y
1 0
2 4
3 2 |
B**Y 发帖数: 786 | 2 现在知道用两步data step怎么做。第一步算x每天的cumsum,第二步加入一个新的变量
z:如果cumsum大于0,z=1,cumsum等于零,z=0。最后再算一次z的cumsum就好了。
有没有一步data step直接得到z的方法?
【在 B**Y 的大作中提到】 : 有这样一组数据 : day x : 1 0 : 1 0 : 1 0 : 2 0 : 2 1 : 2 1 : 2 0 : 2 0
|
s********a 发帖数: 154 | 3 data dt1;
infile datalines;
input day $ x;
datalines;
1 0
1 0
1 0
2 0
2 1
2 1
2 0
2 0
3 1
3 0
;
run;
data dt2;
set dt1;
by day;
retain first_y;
if first.day then y = 0;
if x = 1 and y = 0 then do; y = 1; first_y = _N_; end;
if y gt 0 and first_y ne _n_ then y+1;
if last.day then output;
drop x first_y;
run;
【在 B**Y 的大作中提到】 : 现在知道用两步data step怎么做。第一步算x每天的cumsum,第二步加入一个新的变量 : z:如果cumsum大于0,z=1,cumsum等于零,z=0。最后再算一次z的cumsum就好了。 : 有没有一步data step直接得到z的方法?
|
Z********6 发帖数: 10 | 4 data test;
input day $ x @@;
datalines;
1 0 1 0 1 0
2 0 2 1 2 1 2 0 2 0
3 1 3 0
;
run;
data test1(drop=x);
set test;
by day;
if first.day then y=0;
if x=1 and y=0 then y+1;
else if y>0 then y+1;
if last.day;
run; |
s*********a 发帖数: 37 | 5
【在 B**Y 的大作中提到】 : 有这样一组数据 : day x : 1 0 : 1 0 : 1 0 : 2 0 : 2 1 : 2 1 : 2 0 : 2 0
|