问题描述
我已经看到其他一些在Stata中转置列和行的示例,但是我的问题总是有些不同。我想要做的是对条目进行排序,并基于一个行索引的变量构建几个新的列。我有一个“年份”变量和一个“数据”变量,我想为每个条目(ID)建立一个以年份标记并用“数据”中的相应数字水平填充的新列。
解决方法
您的数据示例已经处于Stata所称的“长”布局中(有人说格式或结构),这对于大多数Stata而言都是最好的。您想要的是一个宽布局,它来自标准的reshape wide
,如下所示:
* Example generated by -dataex-. To install: ssc install dataex
clear
input str1 ID float(Year XData)
"A" 2014 0
"A" 2015 7
"B" 2014 21
"B" 2015 0
"C" 2014 1
"C" 2015 18
"D" 2014 37
"D" 2015 20
"E" 2014 1
"E" 2015 3
end
. list,sepby(ID)
+-------------------+
| ID Year XData |
|-------------------|
1. | A 2014 0 |
2. | A 2015 7 |
|-------------------|
3. | B 2014 21 |
4. | B 2015 0 |
|-------------------|
5. | C 2014 1 |
6. | C 2015 18 |
|-------------------|
7. | D 2014 37 |
8. | D 2015 20 |
|-------------------|
9. | E 2014 1 |
10. | E 2015 3 |
+-------------------+
. reshape wide XData,i(ID) j(Year)
(note: j = 2014 2015)
Data long -> wide
-----------------------------------------------------------------------------
Number of obs. 10 -> 5
Number of variables 3 -> 3
j variable (2 values) Year -> (dropped)
xij variables:
XData -> XData2014 XData2015
-----------------------------------------------------------------------------
. rename XData* X*
. list
+--------------------+
| ID X2014 X2015 |
|--------------------|
1. | A 0 7 |
2. | B 21 0 |
3. | C 1 18 |
4. | D 37 20 |
5. | E 1 3 |
+--------------------+
如上所述,您可以rename
新变量,但是新名称必须以字母或下划线开头。裸露的数字不能是变量名。