楼主: 随便来的
3690 8

[一般统计问题] 对数据两次bysort分别生成新变量,第一次可以,第二次得不到正确结果 [推广有奖]

  • 0关注
  • 0粉丝

大专生

28%

还不是VIP/贵宾

-

威望
0
论坛币
49 个
通用积分
25.3348
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
1354 点
帖子
20
精华
0
在线时间
76 小时
注册时间
2018-1-25
最后登录
2020-6-11

楼主
随便来的 学生认证  发表于 2020-2-24 21:10:18 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
已解决。

求助,我对数据使用了两次bysort公司代码(stkcd)、年份(accper),想要分别生成两个变量,但是总是第一次使用的时候可以得到想要的结果,第二次就不行。
例:
第一次:bysort stkcd accper: gen S5203Y_=sum(S5203Y)
得到
第二次:bysort stkcd accper: gen S5202X_=sum(S5202X)
得到
第94行S5202X_=0,本来应该和第95行一样等于17。
即使把S5202X_、S5203Y_替换顺序生成也是第二个不对,求大家帮助!谢谢!

附部分数据如下
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input long stkcd str10 accper byte area str5 applytypecode str36 applytype long patents int(invention utilitymodel design) float(patentsno S5202X S5203Y S5203Y_ S5202X_)
  4. 32 "2007/12/31" 1 "S5201" "已申请"                             10 0  0  0  10  0  0  0  0
  5. 32 "2008/12/31" 1 "S5203" "已授权"                              5 0  0  0   5  0  5  5  0
  6. 32 "2008/12/31" 1 "S5202" "已获得"                             17 4  9  4  17 17  0  5 17
  7. 32 "2009/12/31" 1 "S5201" "已申请"                             27 3 10 14  27  0  0  0  0
  8. 32 "2009/12/31" 1 "S5203" "已授权"                             15 2 10  3  15  0 15 15  0
  9. 32 "2010/12/31" 1 "S5204" "截至报告期末累计获得"        62 0  0  0  62  0  0  0  0
  10. 32 "2010/12/31" 1 "S5203" "已授权"                             16 0  0  0  16  0 16 16  0
  11. 32 "2010/12/31" 1 "S5201" "已申请"                             18 0  0  0  18  0  0 16  0
  12. 32 "2011/12/31" 1 "S5204" "截至报告期末累计获得"        79 0  0  0  79  0  0  0  0
  13. 32 "2011/12/31" 1 "S5201" "已申请"                             35 0  0  0  35  0  0  0  0
  14. 32 "2011/12/31" 1 "S5203" "已授权"                             19 0  0  0  19  0 19 19  0
  15. 32 "2012/12/31" 1 "S5203" "已授权"                             29 0  0  0  29  0 29 29  0
  16. 32 "2012/12/31" 1 "S5201" "已申请"                             13 0  0  0  13  0  0 29  0
  17. 32 "2013/12/31" 1 "S5201" "已申请"                             26 0  0  0  26  0  0  0  0
  18. 32 "2013/12/31" 1 "S5203" "已授权"                             24 0  0  0  24  0 24 24  0
  19. 32 "2014/12/31" 1 "S5206" "截止报告期末累计已授权"    160 0  0  0 160  0  0  0  0
  20. 32 "2014/12/31" 1 "S5205" "截止报告期末累计已被受理" 203 0  0  0 203  0  0  0  0
  21. 32 "2016/12/31" 1 "S5203" "已授权"                              1 0  0  0   1  0  1  1  0
  22. 32 "2018/12/31" 1 "S5203" "已授权"                             12 0  0  0  12  0 12 12  0
  23. 32 "2018/12/31" 1 "S5201" "已申请"                              5 0  0  0   5  0  0 12  0
  24. end
复制代码

二维码

扫码加我 拉你入群

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

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

关键词:bysort 两次 生成变量

屏幕快照 2020-02-24 下午9.11.36.png (32.5 KB)

第二次的结果

第二次的结果

屏幕快照 2020-02-24 下午9.11.44.png (32.14 KB)

第一次的结果

第一次的结果

回帖推荐

蓝色 发表于6楼  查看完整内容

你都没有说清楚目的是什么 gen的sum是累计求和,当然那个命令没有问题了。第一条数据本来就是0,累计也是0.第二条是0+17=17

沙发
黃河泉 在职认证  发表于 2020-2-25 10:12:21
你的资根本没有 94, 95 行!

藤椅
随便来的 学生认证  发表于 2020-2-25 10:46:26
黃河泉 发表于 2020-2-25 10:12
你的资根本没有 94, 95 行!
不好意思,附的图是原资料的结果,因为太大只是节选了部分贴上来
按照所附资料运行,94、95行对应的应该是年份为"2008/12/31"的第2、3行

板凳
黃河泉 在职认证  发表于 2020-2-25 11:23:47
随便来的 发表于 2020-2-25 10:46
不好意思,附的图是原资料的结果,因为太大只是节选了部分贴上来
按照所附资料运行,94、95行对应 ...
你的程序应用到你发的资料,有问题吗?在哪里?

报纸
随便来的 学生认证  发表于 2020-2-25 11:47:33
黃河泉 发表于 2020-2-25 11:23
你的程序应用到你发的资料,有问题吗?在哪里?
谢谢回复!

我的程序第一次bysort生成S5203Y_=sum(S5203Y),可以得到正确的sum,以stkcd股票代码为32的数据为例,在"2008/12/31"下属的两条数据中可以看到S5203Y_均为正确结果5;
第二次bysort生成S5202X_=sum(S5202X),以stkcd股票代码为32的数据为例,在"2008/12/31"下属的两条数据中可以看到其中一个本应等于17的数据为0。

顺序,先生成S5202X_=sum(S5202X),后生成S5203Y_=sum(S5203Y),则S5202X_两条数据均为正确结果17,而S5203Y_其中一个本应等于5的数据为0。

地板
蓝色 发表于 2020-2-25 12:31:26
你都没有说清楚目的是什么

gen的sum是累计求和,当然那个命令没有问题了。第一条数据本来就是0,累计也是0.第二条是0+17=17

7
随便来的 学生认证  发表于 2020-2-25 13:22:33 来自手机
噢噢!原来是这样!!谢谢谢谢,我的目的是求合计,把sum当成求合计来用了!不知道能不能再叨扰问问?如果想要通过bysort求出数据中某变量相同条件下的多条数据,的另一个变量的和,该用什么命令来求合计呢?
(比如本帖中“applytypecode”同样是S5202的数据的S5202X的和、“applytypecode”同样是S5203的数据的S5203Y的和)

8
随便来的 学生认证  发表于 2020-2-25 13:30:57
蓝色 发表于 2020-2-25 12:31
你都没有说清楚目的是什么

gen的sum是累计求和,当然那个命令没有问题了。第一条数据本来就是0,累计也是 ...
噢噢!原来是这样!!谢谢谢谢,我的目的是求合计,把sum当成求合计来用了!
不知道能不能再叨扰问问?如果想要通过bysort求出数据中某变量相同条件下的多条数据,的另一个变量的和,该用什么命令来求合计呢?
(比如本帖中“applytypecode”同样是S5202的数据的S5202X的和、“applytypecode”同样是S5203的数据的S5203Y的和)

9
随便来的 学生认证  发表于 2020-2-25 13:37:45
蓝色 发表于 2020-2-25 12:31
你都没有说清楚目的是什么

gen的sum是累计求和,当然那个命令没有问题了。第一条数据本来就是0,累计也是 ...
不好意思,已解决!
写一下笔记留待后来有需要的朋友们查看:
gen 提供的 sum() 函数执行的是累积加总,而 egen 提供的 sum() 函数则进行整体加总。
bysort之下,gen sum和egen sum都可以运行,gen sum为累积加总,egen sum为整体加总。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
黃河泉 + 1 + 1 + 1 好的意见建议

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

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

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