将数据集从长数据集转换为宽数据集
Convert dataset from long to wide
我想转换的数据集有问题。
看起来像这样:
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.
我更喜欢在 Stata 中处理问题,但我也愿意使用其他程序。
这是 Stata 中的标准 reshape
。请参阅该命令的帮助和手册条目。
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 |
+-----------------------------
我想转换的数据集有问题。
看起来像这样:
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.
我更喜欢在 Stata 中处理问题,但我也愿意使用其他程序。
这是 Stata 中的标准 reshape
。请参阅该命令的帮助和手册条目。
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 |
+-----------------------------