对于多个变量

  • 本文关键字:变量 于多个 stata
  • 更新时间 :
  • 英文 :


我试图在我的Stata数据集中为多个变量创建二元,在同一时间。

我有:

Year id Freedom
2005 1  6.8
2006 1  7.0
.
.
2016 1  5.5
2005 2  3.8
2006 2  4.2
.
.
.
2016 2  5.4

我想把它变成这个

Year id_origin id_dest Freedom_orig Freedom_dest
2005   1         2         6.8           3.8 
2006   1         2         7.0           4.2
.
.
.
2016   2         1         5.4           5.5

我很难理解你需要什么。也许是因为我不熟悉什么是双性体。

我的理解是,在第一个数据集中,你有按年的观察结果。在结果数据集中,您有year-id1-id2观测值,其中id1-id2表示第一个数据集中所有可能的id对。如果这是正确的,那么您可以使用以下代码:

* Example generated by -dataex-. For more info, type help dataex
clear
input double(year id freedom)
2005 1 6.8
2006 1   7
2016 1 5.5
2005 2 3.8
2006 2 4.2
2016 2 5.4
2005 3 3.1
2006 3 3.2
2016 3 3.3
end
* Save original data to be merged as dest data
preserve
tempfile destdata
rename id id_dest
rename freedom freedom_dest
save `destdata'
restore    

* rename the orig variables
rename id id_orig
rename freedom freedom_orig
* count number of ids in data set. For each year-id add one row per id in the dataset
levelsof id_orig
expand `r(r)'
* Within each year-id, gen id_dest 1, 2 ... to the number if ids
bysort id_orig year : gen id_dest = _n
* Drop rows where both ids are the same
drop if id_orig == id_dest
* Merge the data from id_dest
merge m:1 year id_dest using `destdata', nogen
* Sort and order data
sort id_orig year id_dest
order year id_orig id_dest freedom_orig freedom_dest

这段代码假设id确实是1,2,3n,不跳过任何值。如果您的实际数据中的id是A,B,C等,则必须创建此id。

最新更新