Solved
Contributor
Posts: 66

# Data manupulation

The data set 'have'  is

Data have;

input a b;

datalines;

1 3

1 3

1 3

2 4

2 5

2 4

2 4

2 4

3 2

3 2

4 7

4 8

5 1

5 1

5 1

5 1

6 8

6 7

6 7

6 7

;

Now I want to create a data set want from have to see if there is change in b within each level of  a.

So that my new data set want will have an additional variable Change and should look like this.

Want

a b     Change

1 3     No

1 3     No

1 3     No

2 4     Yes

2 5     Yes

2 4     Yes

2 4     Yes

2 4     Yes

3 2     No

3 2     No

4 7     Yes

4 8     Yes

5 1     No

5 1     No

5 1     No

5 1     No

6 8     Yes

6 7     Yes

6 7     Yes

6 7     Yes

Any help would be highly appreciated.

Thanks.

Accepted Solutions
Solution
‎06-18-2013 01:10 PM
Super Contributor
Posts: 1,636

## Re: Data manupulation

Data have;

input a b;

datalines;

1 3

1 3

1 3

2 4

2 5

2 4

2 4

2 4

3 2

3 2

4 7

4 8

5 1

5 1

5 1

5 1

6 8

6 7

6 7

6 7

;

proc sql;

create table want

as select *, case

when min(b)=max(b) then 'no'

else 'yes'

end as change

from have

group by a;

quit;

proc print;run;

All Replies
Posts: 5,523

## Re: Data manupulation

Simple with SQL and remerging :

proc sql;

create table want as

select *, case when range(b)>0 then "Yes" else "No" end as Change

from have

group by a;

quit;

PG

PG
Solution
‎06-18-2013 01:10 PM
Super Contributor
Posts: 1,636

## Re: Data manupulation

Data have;

input a b;

datalines;

1 3

1 3

1 3

2 4

2 5

2 4

2 4

2 4

3 2

3 2

4 7

4 8

5 1

5 1

5 1

5 1

6 8

6 7

6 7

6 7

;

proc sql;

create table want

as select *, case

when min(b)=max(b) then 'no'

else 'yes'

end as change

from have

group by a;

quit;

proc print;run;

🔒 This topic is solved and locked.