Stata: переименовать все переменные, которые не начинаются с x

Я хотел бы добавить префикс или суффикс для всех переменных, которые не начинаются с x:

clear
input xa xb c d
1 1 1 1
end

Я думал что-то вроде этого: rename (!x)* y* который должен дать этот результат: xa xb yc yd, Спасибо за любую подсказку.

2 ответа

Решение

Это не идеал в моей голове, но, возможно, что-то вроде renpfix может быть полезным для вас:

. clear
. input xa xb c d
            xa         xb          c          d
  1. 1 1 1 1
  2. end
. list

     +-----------------+
     | xa   xb   c   d |
     |-----------------|
  1. |  1    1   1   1 |
     +-----------------+

. renpfix "" y
. renpfix yx x
. list

     +-------------------+
     | xa   xb   yc   yd |
     |-------------------|
  1. |  1    1    1    1 |
     +-------------------+

Здесь я сначала добавил префикс ко всем переменным, в результате чего ваши первые две переменные имеют префикс yx; тогда я заменил yx префикс, чтобы вернуться к x для первых двух переменных.

Обновить

Другой вариант заключается в использовании ds или же findname (установить с помощью search findname) и используя not аргумент для отрицания сопоставленных переменных

. clear
. input xa xb c d
            xa         xb          c          d
  1. 1 1 1 1
  2. end
. list

     +-----------------+
     | xa   xb   c   d |
     |-----------------|
  1. |  1    1   1   1 |
     +-----------------+

. ds x*, not
c  d

. foreach v in `r(varlist)' {
  2. rename `v' y`v'
  3. }
. list

     +-------------------+
     | xa   xb   yc   yd |
     |-------------------|
  1. |  1    1    1    1 |
     +-------------------+

ds а также findname сохранить свои результаты в `r(varlist)'так что вы можете использовать foreach после определения соответствующих переменных.

foreach петли можно избежать

. rename (`r(varlist)') (y=)

Другие вопросы по тегам