I am trying to create a loop that can calculate a mean score for 21 variables, while ignoring missing values and values greater than 4.
-
Login or Register
- Log in with
foreach x of varlist whatever { su `x' if `x' < 4, meanonly di "`x'{col 33}" %5.0f r(N) %10.1f r(mean) }
sysuse auto, clear price 0 . mpg 0 . rep78 40 2.7 headroom 59 2.7 trunk 0 . weight 0 . length 0 . turn 0 . displacement 0 . gear_ratio 74 3.0 foreign 74 0.3
generate avg = 0 generate nvar = 0 foreach x of varlist whatever { replace avg = avg + `x' if `x'<=4 replace nvar = nvar+1 if `x'<=4 } replace avg = avg/nvar
generate avg = 0 generate nvar = 0 foreach x of varlist whatever { replace avg = avg + `x' if `x'<=4 replace nvar = nvar+1 if `x'<=4 } replace avg = avg/nvar
generate newavg = 0 generate newn = 0 foreach x of varlist q1-q21 { replace newavg = newavg + `x' if `x'<=4 replace newn = newn + 1 if `x'<=4 } replace newavg = newavg/mewn
generate newavg = 0 generate newn = 0 foreach x of varlist q1-q21 { replace newavg = newavg + `x' if `x'<=4 replace newn = newn + 1 if `x'<=4 } replace newavg = newavg/mewn
Comment