楼主: wuhankaobo
6666 8

[其他] stata命令求助 分组分年统计 [推广有奖]

  • 0关注
  • 0粉丝

已卖:19份资源

博士生

24%

还不是VIP/贵宾

-

威望
0
论坛币
1222 个
通用积分
4.1500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1051 点
帖子
34
精华
0
在线时间
453 小时
注册时间
2016-1-9
最后登录
2025-12-11

楼主
wuhankaobo 发表于 2018-8-22 13:03:59 |AI写论文
20论坛币
我的附件里面有几列数据;我想得到一个新变量,id是分组的,统计每一个样本在当年之前的megexit之和。
举例子,3i在2005年时,统计2004年的值,应该为0;而2009年;就要统计前面的2004年,2005年的值,应该为1;2014年就要统计2004,2005,2009年的总和,应该为3.

附件: 你需要登录才可以下载或查看附件。没有帐号?我要注册

最佳答案

Wu_Deyuan 查看完整内容

(用你的数据试了一下) gsort id year megexit bys id year:gen n=sum(megexit) bys id year:gen n2=_n bys id year:egen n21=count(year) gen need=. replace need=n if n2==n21 bys id:gen varneed=sum(need) bys id:gen n3=_n encode id, gen(id1) tsset id1 n3 sort id1 n3 gen varneed1=l.varneed replace varneed1=0 if n3==1 replace varneed1=. if year==.

沙发
Wu_Deyuan 在职认证  发表于 2018-8-22 13:04:00
wuhankaobo 发表于 2018-8-22 18:31
大神,很感谢您啊 。  得麻烦您再看下我的数据;我要得到目标值那一列的数据。  目标值就是我手动算的。  ...
(用你的数据试了一下)
gsort id year megexit
bys id year:gen n=sum(megexit)
bys id year:gen n2=_n
bys id year:egen n21=count(year)
gen need=.
replace need=n if n2==n21
bys id:gen varneed=sum(need)

bys id:gen n3=_n
encode id, gen(id1)
tsset id1 n3
sort id1 n3
gen varneed1=l.varneed
replace varneed1=0 if n3==1
replace varneed1=. if year==.
已有 1 人评分论坛币 收起 理由
giresse + 20 精彩帖子

总评分: 论坛币 + 20   查看全部评分

藤椅
Wu_Deyuan 在职认证  发表于 2018-8-22 17:01:52
sort id year
bys id : gen newvar=sum(var)

板凳
wuhankaobo 发表于 2018-8-22 17:12:20
Wu_Deyuan 发表于 2018-8-22 17:01
sort id year
bys id : gen newvar=sum(var)
谢谢您;可是得不到我要的值;我要的值就是样本中举例的目标值。

报纸
Wu_Deyuan 在职认证  发表于 2018-8-22 17:57:46
wuhankaobo 发表于 2018-8-22 17:12
谢谢您;可是得不到我要的值;我要的值就是样本中举例的目标值。
(不好意思之前没看数据,n3就是你需要的,年份缺失的你自己再处理一下)
bys id year:gen n=sum(megexit)
replace n=1 if n>1
duplicates drop id year,force
bys id:gen n1=_n
bys id:gen n2=sum(n)
encode id, gen(id1)
tsset id1 n1
sort id1 n1
gen n3=l.n2
replace n3=0 if n1==1

merge m:1 old.dta id year using new.dta

地板
wuhankaobo 发表于 2018-8-22 18:31:45
Wu_Deyuan 发表于 2018-8-22 17:57
(不好意思之前没看数据,n3就是你需要的,年份缺失的你自己再处理一下)
bys id year:gen n=sum(megexi ...
大神,很感谢您啊 。  得麻烦您再看下我的数据;我要得到目标值那一列的数据。  目标值就是我手动算的。 按照您的命令;得不到我想要的值呢。  简单的说;就是我X年的数值;是X年之前megexist数值之和。比如说2001年数值是1,2002年数值是1;2004年数值是1;2006年数值是4。 那么,2004年的值应该是2;2006年的值应该是3;2009年的取值就是7。

7
wuhankaobo 发表于 2018-8-23 09:43:25
顶礼膜拜,谢谢谢谢

8
狗子的小太阳 学生认证  发表于 2018-8-23 17:27:31
祝楼主好运!!!

9
wuhankaobo 发表于 2018-8-23 18:00:08
狗子的小太阳 发表于 2018-8-23 17:27
祝楼主好运!!!
谢谢啦

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

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2026-1-1 04:48