我的数据看起来有点像这样。第一行是变量名,其余是我的值。 year
描述了选举年份,nutsid
是一种区域标识符,nutsname
是该区域的名称。现在我想关注接下来的三个:spo
,ovp
和fpo
是选举中的政党名称。我希望将它们全部组合在一个名为party
的变量下,并保留我现在拥有的长格式。
| year nutsid nutsname spo ovp fpo|
1. | 2008 AT11 Burgenland 73565 52531 29812|
2. | 1990 AT11 Burgenland 88547 62675 19508|
3. etc
到目前为止,我尝试使用reshape
命令首先将其重新整形为宽格式,然后将其重命名为p_spo
,p_ovp
,p_fpo
使用
reshape long p_, i(nutsid) j(year party) string
我无法说这是一个聪明的主意,或者说它有效,因为它只是给了我一个名为year
的新ID,其值"party"
一遍又一遍地写在其下面。
但是我想知道是否还有其他命令我应该用来获取我所拥有的:
| year nutsid nutsname party votes|
1. | 2008 AT11 Burgenland spo 73565|
2. | 2008 AT11 Burgenland ovp 52531|
3. | 2008 AT11 Burgenland fpo 29812|
4. | 1990 AT11 Burgenland spo 88547|
5. | 1990 AT11 Burgenland ovp 62675|
6. | 1990 AT11 Burgenland fpo 19508|
7. etc
答案 0 :(得分:1)
这里的一些小细节很混乱或不清楚:
在Stata中,变量名称不应被视为或描述为数据的“第一行”,尽管它们将在(例如)数据编辑器中显示为标题。 Stata不是电子表格应用程序。
您提到的reshape
命令要求spo ovp fpo
为rename
d
p_spo p_ovp p_fpo
之前 reshape
;此重命名不遵循reshape
。
由于您只提供部分语法,所以您所做的事情并不清楚。
那就是说,你想要的只是一个简单的reshape
:
clear
input year str4 nutsid str10 nutsname spo ovp fpo
2008 AT11 Burgenland 73565 52531 29812
1990 AT11 Burgenland 88547 62675 19508
end
rename (spo ovp fpo) (votes=)
reshape long votes, i(nutsid year) j(party) string
list, sepby(nutsid year)
+--------------------------------------------+
| nutsid year party nutsname votes |
|--------------------------------------------|
1. | AT11 1990 fpo Burgenland 19508 |
2. | AT11 1990 ovp Burgenland 62675 |
3. | AT11 1990 spo Burgenland 88547 |
|--------------------------------------------|
4. | AT11 2008 fpo Burgenland 29812 |
5. | AT11 2008 ovp Burgenland 52531 |
6. | AT11 2008 spo Burgenland 73565 |
+--------------------------------------------+
在此数据视图中,您有两个所谓的i
变量和一个j
变量。
请注意这里使用input
代码来提供一个数据示例,该示例将在没有您的示例所需的工程设计的情况下运行。您可以使用dataex
安装命令ssc inst dataex
,以便自己轻松实现。