Использование макроса SAS - PullRequest
0 голосов
/ 13 июля 2020

Вот код:

%macro do_regression(dep);

proc glimmix data=xxx;

class group id intv month1;

model &dep = group month1 group*month1/d=normal link=identity;

random intv(id);

lsmeans group*month1/ilink diff  cl ;

lsmestimate group*month1 'bsl-3 ' 1 -1 0 0 -1 1 0 0/cl ;

lsmestimate group*month1 'bsl-6' 1 0 -1 0 -1 0 1 0/cl;

ods output LSMEstimates

run; quit;

%mend;

 

%do_regression(original total domain1)

Вот пример структуры данных: введите описание изображения здесь

Вопрос: Я новичок в макросах SAS и работаю с кодом макроса SAS для запуска следующей модели регрессии для трех конечных переменных (исходный общий домен1). Я вывожу результаты, используя: ods output LSMEstimates, который создал три набора данных с именами data1 - data3 с оценками. Однако я не могу понять, как прикрепить имена конечных переменных этих наборов данных. В конце концов, я хотел бы, чтобы в одном окончательном наборе данных сохранялось только следующее, который может «устанавливать» data1 - data3: оценка метки эффекта нижний верхний. [Я хочу сохранить только оценки из двух показанных операторов lsmestimate, которые я выводил, используя: ods output LSMEstimates]

1 Ответ

1 голос
/ 14 июля 2020

Для агрегирования наборов данных вы можете использовать PRO C APPEND.

ods output LSMEstimates=lsm;
run;quit;
proc append data=lsm base=lsm_aggregate force;
run;

Если значение / переменная & DEP еще не входит в набор данных, сгенерированный оператором ODS OUTPUT, добавьте шаг для его добавления .

data lsm_dep ;
  length dep $32 ;
  dep = "&dep";
  set lsm;
run;
proc append data=lsm_dep base=lsm_aggregate force;
run;

Обязательно удалите набор данных LSM_AGGREGATE перед запуском новой партии моделей.

proc delete data=lsm_aggregate; run;
%do_regression(original )
%do_regression(total )
%do_regression(domain1)
...