Solved
New Contributor
Posts: 4

# creating blocks

I need to create a block variable to keep a tab on changing doses.

subject dose
10002 10MG
10002 10MG
10002 20MG
10002 10MG
10002 10MG

10004 10MG
10004 10MG
10004 10MG
10004 20MG
10004 20MG

I want the final dataset to look like as follows.

subject dose block
10002 10MG   1
10002 10MG   1
10002 20MG   2
10002 10MG   3
10002 10MG   3

10004 10MG   1
10004 10MG   1
10004 10MG   1
10004 20MG   2
10004 20MG   2

any thoughts?

Accepted Solutions
Solution
‎05-12-2017 01:51 AM
Super User
Posts: 23,776

## Re: creating blocks

[ Edited ]

BY groups + FIRST, this assumes your data is sorted as shown.

``````data want;
set have;
by subject dose notsorted;

if first.subject then block=0;
if first.dose then block+1;

run;``````

gp123 wrote:

I need to create a block variable to keep a tab on changing doses.

subject dose
10002 10MG
10002 10MG
10002 20MG
10002 10MG
10002 10MG

10004 10MG
10004 10MG
10004 10MG
10004 20MG
10004 20MG

I want the final dataset to look like as follows.

subject dose block
10002 10MG   1
10002 10MG   1
10002 20MG   2
10002 10MG   3
10002 10MG   3

10004 10MG   1
10004 10MG   1
10004 10MG   1
10004 20MG   2
10004 20MG   2

any thoughts?

All Replies
Solution
‎05-12-2017 01:51 AM
Super User
Posts: 23,776

## Re: creating blocks

[ Edited ]

BY groups + FIRST, this assumes your data is sorted as shown.

``````data want;
set have;
by subject dose notsorted;

if first.subject then block=0;
if first.dose then block+1;

run;``````

gp123 wrote:

I need to create a block variable to keep a tab on changing doses.

subject dose
10002 10MG
10002 10MG
10002 20MG
10002 10MG
10002 10MG

10004 10MG
10004 10MG
10004 10MG
10004 20MG
10004 20MG

I want the final dataset to look like as follows.

subject dose block
10002 10MG   1
10002 10MG   1
10002 20MG   2
10002 10MG   3
10002 10MG   3

10004 10MG   1
10004 10MG   1
10004 10MG   1
10004 20MG   2
10004 20MG   2

any thoughts?

☑ This topic is solved.