Преобразовать набор данных из длинного в широкий - PullRequest
0 голосов
/ 28 апреля 2020

У меня проблема с набором данных, который я хочу преобразовать.

Это выглядит так:

AreaID  VariableName  Year  Value
  1           Var1    2000   20
  1           Var2    2000   30
  1           Var1    2001   21
  1           Var2    2001   32
  2           Var1    2000   50
  2           Var2    2000   55
....etc.

Я хочу, чтобы переменная VariableName была горизонтальной и выглядела так

    AreaID  Year  Var1  Var2
      1     2000   20    30
      1     2001   21    32
      2     2000   50    55

....etc.

Я бы предпочла обработать вопрос в Стата, но я открыт и для других программ.

1 Ответ

1 голос
/ 28 апреля 2020

Это стандарт reshape в Stata. См. Справку и ручной ввод для этой команды.

clear 
input AreaID  str4 VariableName  Year  Value
  1           Var1    2000   20
  1           Var2    2000   30
  1           Var1    2001   21
  1           Var2    2001   32
  2           Var1    2000   50
  2           Var2    2000   55
end 

reshape wide Value, i(AreaID Year) j(VariableName) string 

rename (Value*) (*)

list, sepby(AreaID)

     +-----------------------------+
     | AreaID   Year   Var1   Var2 |
     |-----------------------------|
  1. |      1   2000     20     30 |
  2. |      1   2001     21     32 |
     |-----------------------------|
  3. |      2   2000     50     55 |
     +-----------------------------
...