2017-02-22 18 views
0

Я представлю упрощенную версию того, что я хочу сделать. Я знаю, как сделать это легко в SAS, но не в Stata. Предположим, я пытаюсь создать «плохую» двоичную переменную = 1, если наблюдение классифицируется как неудовлетворительное и 0 в противном случае. Я хочу иметь две классификации, один основан на реальных доходах, а другой основан на реальном потреблении (это переменные в наборе данных).Что такое Stata-эквивалент этого макроса SAS?

Макрос SAS будет

%MACRO poverty_bin(type=, measure=) 
DATA dataset; 
    SET dataset; 
    IF &measure. <= poverty_line THEN poor&type. = 1 ELSE poor&type. = 0; 
RUN; 
%MEND 

%poverty_bin(type=con, measure=real_consumption); 
%poverty_bin(type=inc, measure=real_income); 

, которые должны создать два бинарных переменных poor_con и poor_inc.

Я понятия не имею, как это сделать в Стате. Я пытался делать что-то подобное, чтобы посмотреть, если вложенные foreach является то, что я ищу:

foreach x of newlist con inc { 
    foreach y of newlist real_income real_consumption{ 
     display "`x' and `y'" 
    } 
} 

Но это выдает сообщение об ошибке, говорящее «переменная real_income уже определен»

ответ

0

Сообщение об ошибке вы цитируете означает что ранее код, который вы не показываете нам, создал переменную real_income.

Я не знаю, SAS, но я могу вам сказать, что данный числовой переменной x

gen y = x <= 42 

создаст переменную y со значением 1, если x <= 42 и 0 в противном случае.

Для другой такой переменной используйте другую аналогичную инструкцию. В Stata и, возможно, на любом другом языке, настройка вложенного цикла или определение программы вместо того, чтобы делать два утверждения напрямую, кажется излишним. Для ряда новых переменных, намного больших, чем 2, это может быть неверно.

foreach v in x y { 
    gen new`v' = `v' <= 42 
} 

Для совершенно произвольных существующих имен, новых имен и пороговых значений, скорее всего, будет проще выписывать заявления индивидуально.

Это задокументировано. См., Например, 13.2.2 in [U] или this FAQ.

+0

Привет, спасибо за ваш ответ, но я знаю, как это сделать, чтобы создать двоичную переменную. Я просто привел это в качестве примера, чтобы изложить мой вопрос о том, как написать макрос stata, эквивалентный макросу SAS вообще. Я знаю, что они оба имеют довольно разную процедуру обработки данных. Я знаком с циклом над списком переменных и т. Д. В Stata, но не знаком с тем, как включить список строковых переменных, которые могут быть объединены в основную функцию макроса. Я также не знаю, есть ли способ определить макрофункцию в Stata, как в SAS (так как я называю это «нищета» здесь). – Pukitta

+0

Как уже было сказано, вы можете написать цикл или даже программу для этого. –

Смежные вопросы