Изменить значение переменной в зависимости от того, что содержит строка - PullRequest
0 голосов
/ 08 октября 2018

Предположим, у вас есть несколько переменных:

+--------------------------+------------+------------+-----------+-------+
|                          | Population | Median_Age | Sex_Ratio | GDP   |
| Country                  |            |            |           |       |
+--------------------------+------------+------------+-----------+-------+
| United States of America | 3999       |            | 1.01      | 16000 |
+--------------------------+------------+------------+-----------+-------+
| Afghanistan              | 544        | 19         | 0.97      | 4456  |
+--------------------------+------------+------------+-----------+-------+
| China                    | 5000       | 26         | 0.96      | 10000 |
+--------------------------+------------+------------+-----------+-------+

Предположим, что Median_Age в United States of America пусто.

Как заменить это пропущенное значение на 27, если Country содержит United или United States?

1 Ответ

0 голосов
/ 08 октября 2018

Вот модифицированный пример, который лучше иллюстрирует решение:

clear

input strL Country Population Median_Age Sex_Ratio GDP 
"United States of America" 3999 . 1.01 5000
"Afghanistan" 544 19 0.97 457
"United Emirates" 7546 44 7.01 2000
"China" 10000 26 0.96 3400
"United Fictionary Nation" 6789 . 8.03 7689
end

list, abbreviate(10)

     +-----------------------------------------------------------------------+
     |                  Country   Population   Median_Age   Sex_Ratio    GDP |
     |-----------------------------------------------------------------------|
  1. | United States of America         3999            .        1.01   5000 |
  2. |              Afghanistan          544           19         .97    457 |
  3. |          United Emirates         7546           44        7.01   2000 |
  4. |                    China        10000           26         .96   3400 |
  5. | United Fictionary Nation         6789            .        8.03   7689 |
     +-----------------------------------------------------------------------+

replace Median_Age = 27 if ( strmatch(Country, "*United States*") | ///
                             strmatch(Country, "*United*") ) & ///
                             missing(Median_Age)

list, abbreviate(10)

     +-----------------------------------------------------------------------+
     |                  Country   Population   Median_Age   Sex_Ratio    GDP |
     |-----------------------------------------------------------------------|
  1. | United States of America         3999           27        1.01   5000 |
  2. |              Afghanistan          544           19         .97    457 |
  3. |          United Emirates         7546           44        7.01   2000 |
  4. |                    China        10000           26         .96   3400 |
  5. | United Fictionary Nation         6789           27        8.03   7689 |
     +-----------------------------------------------------------------------+
...