楼主: 0261301638
26778 7

[编程问题求助] stata如何根据条件生成新变量 [推广有奖]

  • 2关注
  • 0粉丝

讲师

31%

还不是VIP/贵宾

-

威望
0
论坛币
501 个
通用积分
78.4329
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
6517 点
帖子
259
精华
0
在线时间
343 小时
注册时间
2019-11-2
最后登录
2025-8-30

楼主
0261301638 发表于 2020-8-14 21:46:08 |AI写论文
200论坛币


这是2000年的数据,我想生成一个新变量,当这个公司impexp变量在既有0又有1的情况下,生成一个新的变量数值为3。原因是:1代表纯一般贸易公司,0代表纯加工公司,当年既有0又有1就是混合公司。所以想生成一个新的变量,进行分类






最佳答案

2537542054 查看完整内容

提供一思路,可以试试
关键词:Stata tata 新变量 加工公司 贸易公司

沙发
2537542054 学生认证  发表于 2020-8-14 21:46:09
提供一思路,可以试试
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input int year byte(id impexp) float newimp
  4. 2000 1 1 1
  5. 2000 1 1 1
  6. 2000 1 1 1
  7. 2000 1 1 1
  8. 2000 1 1 1
  9. 2000 1 1 1
  10. 2000 2 1 3
  11. 2000 2 1 3
  12. 2000 2 0 3
  13. 2000 2 1 3
  14. 2000 3 0 0
  15. 2000 3 0 0
  16. 2000 3 0 0
  17. 2000 3 0 0
  18. 2000 3 0 0
  19. end
复制代码

  1. sort id
  2. by id : egen numid=count(impexp)
  3. by id : egen numimp1=count(impexp) if impexp==1
  4. by id : egen numimp2=count(impexp) if impexp==0
  5. replace numimp1=0 if numimp1==.
  6. replace numimp2=0 if numimp2==.
  7. gen numimp=numimp1+numimp2
  8. gen newimp=.
  9. replace newimp=1 if impexp==1
  10. replace newimp=0 if impexp==0
  11. replace newimp=3 if numimp!=numid
  12. drop numid numimp1 numimp2 numimp
复制代码

藤椅
0261301638 发表于 2020-8-14 21:48:17
这是变量的情况

111.png (120.3 KB)

这是变量的情况

这是变量的情况

板凳
0261301638 发表于 2020-8-14 21:57:43
重新阐述一下问题,这是2000年一年的公司数据,一个公司会有好几条数据,对应的是对不同的出口国家而言的,我想生成一个新变量,如果某个公司impexp变量全是1的话,新变量的数就是1,如果某个公司impexp变量全是0的话,新变量的数就是0,如果某个公司impexp变量既有0又有1的话,新变量就是3

报纸
蓝色 发表于 2020-8-15 09:58:06
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input str2 qymc  year impexp
  4. A 2000  1
  5. A 2000  1
  6. A 2000  1
  7. A 2000  1
  8. A 2000  1
  9. A 2000  1
  10. B 2000  1
  11. B 2000  1
  12. B 2000  0
  13. B 2000  1
  14. C 2000  0
  15. C 2000  0
  16. C 2000  0
  17. C 2000  0
  18. C 2000  0
  19. end

  20. bys qymc : egen n1=count(year)
  21. bys qymc : egen n2=total(impexp)

  22. gen     want=1 if n1==n2
  23. replace want=3 if n1>n2
  24. replace want=0 if n2==0

  25. list
复制代码

地板
0261301638 发表于 2020-8-15 10:02:51
2537542054 发表于 2020-8-14 21:46
提供一思路,可以试试
可以用了,很棒,大佬,有联系方式吗,我后面数据整理可能还有一些问题向您请教,有偿哦,这200币不算啥

7
DΘstinyじò 发表于 2020-8-15 14:29:03
  1. bys qymc (impexp): gen wanted=cond(impexp[_N]-impexp[1],3,cond(impexp[_N]==1,1,0))
复制代码

8
2537542054 学生认证  发表于 2020-8-15 21:51:41
0261301638 发表于 2020-8-15 10:02
可以用了,很棒,大佬,有联系方式吗,我后面数据整理可能还有一些问题向您请教,有偿哦,这200币不算啥
正好最近在学习相关的内容,欢迎交流学习

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

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