SAS: Proc freq by group для всех переменных одновременно? - PullRequest
0 голосов
/ 23 мая 2019

Я использую Proc freq для вычисления D Сомерса между зависимой переменной (log salary) и независимой переменной (crhits, crhome и т. Д.)

Есть ли способ получить все результаты в одном выражении proc freq?

Код, который я использую в настоящее время:

    DATA baseball;
        SET sashelp.baseball;
    RUN;

    PROC SORT 
        DATA = baseball; 
        BY team; 
    RUN;

    PROC FREQ 
        DATA = baseball
        ;
        TABLES logsalary * crhits
        / 
        MEASURES;
        OUTPUT OUT = somersd
            (KEEP = team N _SMDCR_
            RENAME = (_SMDCR_ = somers_d
                       N = num_in_group))
        MEASURES;
        BY team;
    RUN;

Я хочу получить выходные данные "somersd" для каждой переменной crhits, crhome и т. Д. В одной таблице и сделать все это в одной процедуре, возможно ли это?

1 Ответ

1 голос
/ 23 мая 2019

Почему бы просто не транспонировать данные, чтобы независимая переменная стала новой группой BY?

proc transpose data=sashelp.baseball out=tall name=stat;
  by name team logsalary notsorted;
  var crhits crhome;
run;
proc sort;
  by team stat;
run;

ods exclude all;
PROC FREQ DATA = tall ;
  BY team stat;
  TABLES logsalary * col1 / MEASURES;
  output measures out=measures
    (KEEP = team stat N _SMDCR_
     RENAME = (_SMDCR_ = somers_d N = num_in_group)
    ) 
  ;
RUN;
ods exclude none;
...