首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Stata中创建基于关系列的新变量?

问如何在Stata中创建基于关系列的新变量?
EN

Stack Overflow用户
提问于 2021-03-02 23:50:59
回答 1查看 58关注 0票数 0

我的数据集是具有以下列的长格式面板数据: id、var1、syear、partner_id

var1是与具有各自id的人相关的兴趣值

partner_id是由ID定义的人的伴侣(例如妻子或丈夫)的id

现在,我想创建一个新的变量var2,它接受(来自var1的)每个id & year的人员的合作伙伴的值。

当对非面板数据使用下面的建议代码(thx to @Nick-Cox)时,var2结果如下:

​

​

但我希望它是这样的:

​

​

由于我以前没有任何经验,Stata,我将感谢您的帮助!

因此,以下是简化的数据作为代码(如果这很重要:在我的原始数据集中有更多的年份,有时多年来有不同的合作伙伴以及遗漏;例如,当有一年没有合作伙伴时):

代码语言:javascript
复制
id syear var1 partner_id
1 2000 1000 2 
1 2001 2000 2
2 2000 3000 1
2 2001 4000 1 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-03 02:36:57

考虑一下您第一次发布的数据和问题的呈现(请注意,将数据表示为图像不如将数据表示为代码):

代码语言:javascript
复制
* Example generated by -dataex-. To install: ssc install dataex
clear
input float(id var1 partner_id var2)
1  5000 4  3000
2  2000 1  5000
3  1000 5 10000
4  3000 2  2000
5 10000 3  1000
end

gen wanted = var1[partner_id]

assert wanted == var2

编辑现在考虑此解决方案,用于您的修订数据。修改后的数据示例可能看起来很简单,只有两个标识符,这两个标识符是彼此的合作伙伴,对于这些标识符来说,简单的代码就足够了。但是,我已经编写了更通用的代码。

代码语言:javascript
复制
* Example generated by -dataex-. To install: ssc install dataex
clear
input byte id int syear float var1 byte partner_id
1 2000 1000 2
1 2001 2000 2
2 2000 3000 1
2 2001 4000 1
end

save orig, replace 

keep id var1 syear 
rename (id var1) (partner_id wanted)
merge 1:1 partner_id syear using orig

sort id syear 

list 

     +-----------------------------------------------------+
     | partne~d   syear   wanted   id   var1        _merge |
     |-----------------------------------------------------|
  1. |        2    2000     3000    1   1000   matched (3) |
  2. |        2    2001     4000    1   2000   matched (3) |
  3. |        1    2000     1000    2   3000   matched (3) |
  4. |        1    2001     2000    2   4000   matched (3) |
     +-----------------------------------------------------+
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66442626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档