楼主: 风色年华
3036 4

[面板数据求助] STATA如何计算多年重复值 [推广有奖]

  • 0关注
  • 1粉丝

高中生

57%

还不是VIP/贵宾

-

威望
0
论坛币
65 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
129 点
帖子
5
精华
0
在线时间
57 小时
注册时间
2020-1-16
最后登录
2021-3-2

楼主
风色年华 学生认证  发表于 2020-12-28 22:55:03 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
比如如下数据:
id      year     name
1      2012      A
1      2012      B
1      2013      A
1      2013      C
1      2014      B
2      2012      D
2      2012      E
2      2013      D
2      2013      F
2      2014      E

我想在STATA中生成新变量“X”等于每一个ID在今年,上一年以及下一年的name的重复次数。比如id 1  2013年的X是它2012,2013 ,2014年所有 name的重复次数,例子中出现两次A和b,就等于2;2014年的就是2013,2014,2015年name的重复次数,依次类推。求各位高手帮忙
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Stata tata 重复值 name year

沙发
zdlspace 学生认证  发表于 2021-1-2 00:24:52
2013年哪里出现两次A和B了,听不懂啊

藤椅
风色年华 学生认证  发表于 2021-1-3 10:45:48
zdlspace 发表于 2021-1-2 00:24
2013年哪里出现两次A和B了,听不懂啊
ID1,2013年的X是ID1  2012 2013 2014 name 的重复次数,这三年中A出现两次,故重复了一次;B也出现两次,也重复了一次。加起来就是两次,X=2。

板凳
lq_1998 发表于 2021-3-5 20:19:51
您好,请问您的问题解决了吗,我也有相同的疑问

报纸
赵安豆 发表于 2024-7-23 13:27:11
在STATA中计算多年重复值可以使用`by`, `egen` 和 `collapse`命令结合窗口函数来实现。但是,在你的情况下,我们需要考虑到前一年和后一年的数据,并且要计算name的重复次数。这里给出一个可能的步骤:

1. **首先排序数据**: 保证按照ID和Year进行排序。
2. **生成年份偏移变量**: 使用 `generate` 和 `lag()`/`lead()` 来创建滞后或领先一年的变量。
3. **组合所有相关年份的数据**: 使用 `append` 或 `concatenate` 来合并当前、前一年和后一年的数据,为每个ID创建一个连续的时间窗口。
4. **使用egen计算重复次数**: 在合并后的数据中对name进行计数。

以下是一个实现的示例代码:

```stata
* 假设你的数据已经在内存中并且已经按照id和year排序
sort id year

* 生成前一年和后一年的变量
gen l_year = cond(_n==1,.,year[_n-1])
gen f_year = cond(_n==_N,.,year[_n+1])

* 使用`concatenate`或者append来合并数据,这里使用append作为示例
forvalues i=2012/2014 {
  keep if year==`i' | year==`i'-1 | year==`i'+1
  append using yourdata // 这里应该替换为你的数据集名称
}

* 按照id排序,以确保正确计算
sort id

* 使用egen命令来计数每个ID每年的name重复次数
egen X = count(name), by(id l_year year f_year)

* 清理不需要的临时变量
drop l_year f_year

* 现在X包含了每个ID每年所有相关年份内的name重复次数
```

注意:上述代码假设你的数据已经加载到STATA中,并且你有权限进行append操作。`concatenate`命令在这里可能需要自定义实现,因为STATA中的concatenate并不是直接的命令,但append可以达到类似的效果。

另外,在实际使用时,请根据自己的具体数据集结构调整代码,特别是`append using yourdata`部分应该替换为你的数据文件路径或者处理方法。

这个步骤可能会有一些性能问题,尤其是当数据量非常大时。在大数据集上操作可能需要优化或采用更复杂的数据管理技术来确保效率和准确性。

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-30 04:49