EA 发帖数: 3965 | 1 I have a dataset
id date
1 1/1/2011
1 1/2/2011
1 1/3/2011
1 1/3/2011
1 1/3/2011
1 1/3/2011
2 3/2/2000
2 3/3/2000
2 3/4/2000
2 3/4/2000
2 3/4/2000
2 3/7/2000
2 3/8/2000
and want to output the following dataset, any ideas how to do it?
id date flag
1 1/1/2011 0
1 1/2/2011 0
1 1/3/2011 1
1 1/3/2011 1
1 1/3/2011 1
1 1/3/2011 1
2 3/2/2000 0
2 3/3/2000 0
2 3/4/2000 1
2 3/4/2000 1
2 3/4/2000 1
2 3/7/2000 0
2 3/8/2000 0 |
k*****u 发帖数: 1688 | 2 你这个 0 1 是按什么鬼测来的?
看了一眼没看出规则啊 |
R*********i 发帖数: 7643 | 3 Do you want to flag the last day in consective days? |
l***a 发帖数: 12410 | 4 就是有没有duplicate吧
proc table data=a out=b;
by id date;
run;
proc sql;
create table c as
select a.*, (b.n>1) as flag
from a join b
on a.id=b.id and a.date=b.date;
quit;
【在 k*****u 的大作中提到】 : 你这个 0 1 是按什么鬼测来的? : 看了一眼没看出规则啊
|
D******r 发帖数: 25 | 5 proc sql;
create table want as
select have.id, have.date,
case when have_temp.flag eq 1 then 0
else 1
end as flag
from
have inner join (select date, count(*) as flag
from have
group by date) as have_temp
on have.date=have_temp.date;
quit;
【在 EA 的大作中提到】 : I have a dataset : id date : 1 1/1/2011 : 1 1/2/2011 : 1 1/3/2011 : 1 1/3/2011 : 1 1/3/2011 : 1 1/3/2011 : 2 3/2/2000 : 2 3/3/2000
|
EA 发帖数: 3965 | 6 very cool. Thanks.
【在 D******r 的大作中提到】 : proc sql; : create table want as : select have.id, have.date, : case when have_temp.flag eq 1 then 0 : else 1 : end as flag : from : have inner join (select date, count(*) as flag : from have : group by date) as have_temp
|
r******m 发帖数: 369 | 7 data test;
input id date$;
cards;
1 1/1/2011
1 1/2/2011
1 1/3/2011
1 1/3/2011
1 1/3/2011
1 1/3/2011
2 3/2/2000
2 3/3/2000
2 3/4/2000
2 3/4/2000
2 3/4/2000
2 3/7/2000
2 3/8/2000
run;
data new;
set test;
by date notsorted;
if first.date and last.date then flag=0;
else flag =1;
run; |
h******s 发帖数: 3420 | 8 yes, I used this one before
【在 r******m 的大作中提到】 : data test; : input id date$; : cards; : 1 1/1/2011 : 1 1/2/2011 : 1 1/3/2011 : 1 1/3/2011 : 1 1/3/2011 : 1 1/3/2011 : 2 3/2/2000
|