楼主: 马梦林
3401 9

[数据管理求助] stata如何按照分组分别赋值 [推广有奖]

  • 2关注
  • 6粉丝

已卖:301份资源

硕士生

89%

还不是VIP/贵宾

-

威望
0
论坛币
974 个
通用积分
31.7789
学术水平
6 点
热心指数
6 点
信用等级
6 点
经验
1674 点
帖子
37
精华
0
在线时间
369 小时
注册时间
2020-3-11
最后登录
2025-8-14

楼主
马梦林 学生认证  发表于 2021-5-26 00:18:31 |AI写论文
20论坛币
        数据如下,哪位大神帮忙看看如何实现每组股票HS300出现1之前的样本删除,出现1之后的HS300补充为1,出现2之后的删除。。。。。



clearinput long stkcd float(year HS300)
1 2005 1
1 2006 .
1 2007 .
1 2008 .
1 2009 .
1 2010 .
1 2011 .
1 2012 .
1 2013 .
1 2014 .
1 2015 .
1 2016 .
1 2017 .
1 2018 .
1 2019 .
1 2020 .
2 2005 1
2 2006 .
2 2007 .
2 2008 .
2 2009 .
2 2010 .
2 2011 .
2 2012 .
2 2013 .
2 2014 .
2 2015 .
2 2016 .
2 2017 .
2 2018 .
2 2019 .
2 2020 .
8 2005 .
8 2006 .
8 2007 .
8 2008 .
8 2009 .
8 2010 .
8 2011 .
8 2012 .
8 2013 .
8 2014 .
8 2015 .
8 2016 1
8 2017 .
8 2018 2
8 2019 .
8 2020 .
9 2005 1
9 2006 .
9 2007 .
9 2008 .
9 2009 .
9 2010 .
9 2011 .
9 2012 .
9 2013 .
9 2014 .
9 2015 .
9 2016 .
9 2017 2
9 2018 .
9 2019 .
9 2020 .
12 2005 1
12 2006 .
12 2007 .
12 2008 .
12 2009 .
12 2010 .
12 2011 .
12 2012 .
12 2013 .
12 2014 2
12 2015 .
12 2016 .
12 2017 .
12 2018 .
12 2019 .
12 2020 .
16 2005 1
16 2006 2
16 2007 .
16 2008 .
16 2009 .
16 2010 .
16 2011 .
16 2012 .
16 2013 .
16 2014 .
16 2015 .
16 2016 .
16 2017 .
16 2018 .
16 2019 .
16 2020 .
21 2005 1
21 2006 .
21 2007 .
21 2008 .



最佳答案

黃河泉 查看完整内容

请 ssc install rangestat 并试试 (但若第一个出现的值是 2,就会有问题)
关键词:Stata tata HS300 Input float

回帖推荐

黃河泉 发表于9楼  查看完整内容

是这样吗?

黃河泉 发表于2楼  查看完整内容

请 ssc install rangestat 并试试 (但若第一个出现的值是 2,就会有问题)

会计学硕士 发表于4楼  查看完整内容

xtset 身份标识 year replace 变量名称 = 1 if L1.变量名称 == 1 replace 变量名称 = 1 if L2.变量名称 == 1 ........ 一直这样试 如果每个标识有5期,则试到L4 最后删除不等于1的样本 这是比较笨的方法,不过应该能用

沙发
黃河泉 在职认证  发表于 2021-5-26 00:18:32
请 ssc install rangestat 并试试 (但若第一个出现的值是 2,就会有问题)
  1. rangestat (max) HS300, interval(year . 0) by(stkcd)
  2. replace HS300_max = 1 if HS300_max == 2
  3. drop if HS300_max == .
复制代码

藤椅
马梦林 学生认证  发表于 2021-5-26 10:10:25
写论文急需!!!!stata小白一枚,请各路大神帮帮忙!!!

板凳
会计学硕士 在职认证  学生认证  发表于 2021-5-26 10:46:12
xtset 身份标识 year
replace 变量名称 = 1 if L1.变量名称 == 1
replace 变量名称 = 1 if L2.变量名称 == 1
........
一直这样试
如果每个标识有5期,则试到L4
最后删除不等于1的样本
这是比较笨的方法,不过应该能用

报纸
马梦林 学生认证  发表于 2021-5-26 11:24:28
会计学硕士 发表于 2021-5-26 10:46
xtset 身份标识 year
replace 变量名称 = 1 if L1.变量名称 == 1
replace 变量名称 = 1 if L2.变量名称 ...
身份标识在这是指stkcd吗,一共是2005年到2020年16期

地板
会计学硕士 在职认证  学生认证  发表于 2021-5-26 12:42:39
马梦林 发表于 2021-5-26 11:24
身份标识在这是指stkcd吗,一共是2005年到2020年16期
对,就是股票代码之类的数据

7
马梦林 学生认证  发表于 2021-5-26 16:42:09
黃河泉 发表于 2021-5-26 00:18
请 ssc install rangestat 并试试 (但若第一个出现的值是 2,就会有问题)
谢谢老师,我试了试,第一个问题解决了,HS300出现1之前的都删除了,而且出现之后的缺失值也补充为了0,但是还有一个问题就是还要把每组HS300出现2之后的年份删除,请问这个该怎么做到

8
马梦林 学生认证  发表于 2021-5-26 16:44:37
黃河泉 发表于 2021-5-26 00:18
请 ssc install rangestat 并试试 (但若第一个出现的值是 2,就会有问题)
例如这个股票代码 8 ,HS300在2018年为2,如何把出现2包括2这一年,也就是2018-2020年都删除了

9
黃河泉 在职认证  发表于 2021-5-26 16:55:18
马梦林 发表于 2021-5-26 16:44
例如这个股票代码 8 ,HS300在2018年为2,如何把出现2包括2这一年,也就是2018-2020年都删除了
是这样吗?
  1. rangestat (max) HS300, interval(year . 0) by(stkcd)
  2. drop if HS300_max == 2
  3. *replace HS300_max = 1 if HS300_max == 2
  4. drop if HS300_max == .
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 3 + 3 + 3 热心帮助其他会员

总评分: 学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

10
马梦林 学生认证  发表于 2021-5-26 17:00:28
黃河泉 发表于 2021-5-26 16:55
是这样吗?
嗯嗯!!!是这样的!谢谢老师!!!!

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-30 16:14