Obsidian | Level 7

## Change values (purposefully) between two groups until both proportions are equivalent

Hi everyone,

My question: I have a dataset with three columns [ID \$; Group (class variable); Value (continuous)] - sample code provided below.

My goal: change values for group 0 to be equivalent to the values for group 1 (by equivalent I want both groups to have same average).

The problem: I can't make up values. A member (ID) from Group 0 *must* take a value from group 1 (doesn't matter who) and the program needs to terminate once the averages between the two groups are equivalent (or ideally a user specified tolerance, say 1% or 5% within each other). The other problem is that the dataset has dozens of other records that I need to retain, so do not want to transpose. Exporting the Group=1 into a new dataset and then re-joining to the original is fine, but I would like the structure to remain in tact.

Appreciate the help if someone has some time. Happy to clarify. Kind regards, Nate

data Step1;
input ID \$ Continuous Group ;
datalines;
1 1792 0
6 1425 0
9 1782 0
10 2019 0
18 2294 0
20 1616 0
21 1551 0
24 1791 0
25 1828 0
26 1602 0
34 1611 0
35 1424 0
2 2498 1
3 2318 1
4 1848 1
5 1698 1
7 1964 1
8 2066 1
11 2348 1
12 2127 1
13 2340 1
14 2423 1
15 2184 1
16 2337 1
17 2233 1
19 1817 1
22 2196 1
23 2697 1
27 2156 1
28 2488 1
29 1977 1
30 2074 1
31 2084 1
32 2112 1
33 2251 1
36 1509 1
37 2357 1
38 2501 1
39 1309 1

;
run;

1 ACCEPTED SOLUTION

Accepted Solutions
Super User

## Re: Change values (purposefully) between two groups until both proportions are equivalent

Do you have SAS/QC ?

``````data Step1;
input ID \$ number ;
datalines;
1 1792 0
6 1425 0
9 1782 0
10 2019 0
18 2294 0
20 1616 0
21 1551 0
24 1791 0
25 1828 0
26 1602 0
34 1611 0
35 1424 0
2 2498 1
3 2318 1
4 1848 1
5 1698 1
7 1964 1
8 2066 1
11 2348 1
12 2127 1
13 2340 1
14 2423 1
15 2184 1
16 2337 1
17 2233 1
19 1817 1
22 2196 1
23 2697 1
27 2156 1
28 2488 1
29 1977 1
30 2074 1
31 2084 1
32 2112 1
33 2251 1
36 1509 1
37 2357 1
38 2501 1
39 1309 1
;
run;

data treatments;
trt=1;output;
trt=2;output;
run;

proc optex data=treatments seed=123 coding=orthcan;
class trt;
model trt;

blocks design=step1;
model number;
output out=want;
run;

proc means data=want n mean std nway;
class trt;
var number;
run;``````
4 REPLIES 4
Super User

## Re: Change values (purposefully) between two groups until both proportions are equivalent

Do you have SAS/QC ?

``````data Step1;
input ID \$ number ;
datalines;
1 1792 0
6 1425 0
9 1782 0
10 2019 0
18 2294 0
20 1616 0
21 1551 0
24 1791 0
25 1828 0
26 1602 0
34 1611 0
35 1424 0
2 2498 1
3 2318 1
4 1848 1
5 1698 1
7 1964 1
8 2066 1
11 2348 1
12 2127 1
13 2340 1
14 2423 1
15 2184 1
16 2337 1
17 2233 1
19 1817 1
22 2196 1
23 2697 1
27 2156 1
28 2488 1
29 1977 1
30 2074 1
31 2084 1
32 2112 1
33 2251 1
36 1509 1
37 2357 1
38 2501 1
39 1309 1
;
run;

data treatments;
trt=1;output;
trt=2;output;
run;

proc optex data=treatments seed=123 coding=orthcan;
class trt;
model trt;

blocks design=step1;
model number;
output out=want;
run;

proc means data=want n mean std nway;
class trt;
var number;
run;``````
Obsidian | Level 7

## Re: Change values (purposefully) between two groups until both proportions are equivalent

Hi Ksharp - and thank you. Sadly, no, running SAS University Edition via virtual machine.

Super User

## Re: Change values (purposefully) between two groups until both proportions are equivalent

Obsidian | Level 7

## Re: Change values (purposefully) between two groups until both proportions are equivalent

Thanks Ksharp - this solution does work.

Discussion stats
• 4 replies
• 494 views
• 2 likes
• 2 in conversation