2016-05-27 4 views
0

Как создать цикл строковых значений в Stata? Образец того, что я пытаюсь сделать, упоминается ниже. У меня будет много других возможных значений в списке. Я прошел через и сделал много ручных списков, поэтому я хочу сделать это в таком же формате, чтобы вы могли посмотреть на код и посмотреть список.foreach для строковых значений, список руководства

Я нашел вопросы по foreach и forval, но не могу найти что-то непосредственно связаны с переменными значениями foreach и строки? Я пропустил что-то действительно простое?

попытался это:

foreach x of 

"GREEN BLUE" /// 

"RED ORANGE" /// 

{ 

replace y = 1 if COLOUR=="`x'" & missing(y) 

} 

и это:

foreach x of { 

"GREEN BLUE" /// 

"RED ORANGE" /// 

{ 

replace y = 1 if COLOUR=="`x'" & missing(y) 

} 

} 
+0

я получаю эту ошибку:} не является допустимым именем команды –

ответ

1

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

foreachиндексinсписок

foreachиндексofключевое словоlist_or_where_to_find_it

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

Таким образом, это должно работать (в зависимости, естественно, от набора данных, которые мы не можем видеть)

foreach x in "GREEN BLUE" "RED ORANGE" { 
    replace y = 1 if COLOUR == "`x'" & missing(y) 
} 

В сущности, все, что не разрешено в синтаксической диаграмме во главе каждого документа, безусловно, запрещено , Ваш синтаксис должен соответствовать одной из форм.

Meta-tip: ознакомьтесь с документацией Stata перед поиском в Интернете.

1

Основываясь на ответе Ника, если часть цели заключалась в том, чтобы включить элементы списка в отдельные строки для ясности, сделайте что-то вроде следующего, которое нарушит первую линию Ника на четыре части. Опять же, повторяя рекомендации Ника, первая остановка должна всегда состоять в том, чтобы прочитать прекрасный материал, который Stata делает с его командой help и в полной документации, поставляемой в виде PDF-файлов, и доступной через меню Stata help. С учетом сказанного,

foreach x in /// 
"GREEN BLUE" /// 
"RED ORANGE" /// 
{ 
replace y = 1 if COLOUR == "`x'" & missing(y) 
} 
+0

Спасибо Уильям и Ник. Где я застрял в том, что после первой строки кода Уильяма я получаю: {required. Затем после каждого значения я получаю «значение» не действительное имя команды. Но то, что Уильям сказал о моем стремлении иметь значения в списке (а не все в одной строке), является тем, к чему я стремлюсь. Благодаря! –

+0

Как 'value' относится к этому коду? Чтобы получить ответы на любой вопрос, вам нужно точно указать **, что вы печатаете. Обратите внимание, что синтаксис '///' комментариев не будет приниматься в интерактивном режиме.Это нормально, чтобы отредактировать исходный вопрос, но лучше отмечать дополнения, например. по EDIT: –

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

  • Нет связанных вопросов^_^