Как сгенерировать фиктивную переменную в Stata на основе вложенной строки существующей строковой переменной?

#variables #stata

#переменные #stata

Вопрос:

Я ищу способ создать фиктивную переменную, которая проверяет переменную с именем text на соответствие нескольким заданным подстрокам, таким как «книга, покупка, путешествие».

Теперь я хочу проверить, есть ли в наблюдении book, buy или journey . Если в подстроке найдено одно из этих ключевых слов, то фиктивной переменной должно быть 1, в противном случае 0. Пример:

                  TEXT
Book your tickets now
Swiss is making your journey easy
Buy your holiday tickets now!
A touch of Austria in your lungs.
 

Желаемый результат должен быть

 dummy variable
       1
       1
       1
       0
 

Я попробовал это с помощью strpos, а также регулярных выражений с очень ограниченными результатами.

С уважением,

Йохи

Ответ №1:

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

 * Example generated by -dataex-. To install: ssc install dataex
clear
input str33 text
"Book your tickets now"            
"Swiss is making your journey easy"
"Buy your holiday tickets now!"    
"A touch of Austria in your lungs."
end

generate wanted = regexm(text, "[Bb]ook|[Bb]uy|[Jj]ourney")
list
 

Результат:

 . list

      -------------------------------------------- 
     |                              text   wanted |
     |--------------------------------------------|
  1. |             Book your tickets now        1 |
  2. | Swiss is making your journey easy        1 |
  3. |     Buy your holiday tickets now!        1 |
  4. | A touch of Austria in your lungs.        0 |
      -------------------------------------------- 
 

Смотрите также эту ссылку для получения информации о регулярных выражениях.