When I work with macro to create sub scales, I normally list the total number of items and then use that number to calculate the missing. For example, I am creating a scale X with sub scales A B and C %macro ScaleX ; numitemsA = 10; numitemsB = 3; numitemsC = 5; missA = nmiss (of I LIST EACH ITEM HERE); miss B = nmiss (of I LIST EACH ITEM HERE); missC = nmiss of I LIST EACH ITEM HERE); if missA = numitemsA then subscaleA=.; ** all vars are missing; else Sub scale A = (mean (of I list the items again)\ I do the same for the other scales and it works perfectly. However, in one of these sub scales, I have a different total item, depending on the group of participants (cohort). I will use sub scale A to try to explain. Cohort 1 has only 5 of the 10 items of sub scale A (numitemsA) and cohort 2 has all 10 items (from numitemsA). So I thought of doing numitemsA = 10; numitemsAA=5; numitemsB = 3; numitemsC = 5; If cohort = 1 then missAA=nmiss (of list 5 items here); If cohort = 2 then missA=nmiss (of list 10 items here); if missA = numitemsA then subscaleA=.; ** all vars are missing; else subScaleA= (mean (of list 10 items here)); if missAA = numitemsAA then subScaleA=. ; ** all vars are missing; else subScaleA= (mean (of list 5 items here)); I also need to do this if missA gt (.20*numitemsA) then subscaleA=.; if missAA gt (.20*numitemsAA) then subscaleA=.; %mend scaleX; Would this overwrite the data? Or will I get the correct scaleA, calculated differently for each cohort, as shown above? Thank you.
... View more