楼主: zhouershimei
1397 5

[数据管理求助] stata求助大神 [推广有奖]

  • 2关注
  • 0粉丝

已卖:3份资源

副教授

46%

还不是VIP/贵宾

-

威望
0
论坛币
74 个
通用积分
17.7325
学术水平
1 点
热心指数
2 点
信用等级
1 点
经验
15931 点
帖子
582
精华
0
在线时间
561 小时
注册时间
2011-5-13
最后登录
2025-9-27

楼主
zhouershimei 发表于 2020-9-23 09:06:53 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
复制代码




二维码

扫码加我 拉你入群

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

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

关键词:stata求助 Stata tata 求助大神 Programming

沙发
DΘstinyじò 发表于 2020-9-23 16:35:34
假若有104家庭 2010选择的课程为:programming和piano,而在2011选择为swimming,不同于101家庭,104家庭在课程选择上没有共同的课程,这种情况也是赋值为1,是吗?也就是说,统计的是当年异于上一年年份课程选择的类数,若当年课程选择种类在上一年份的选择范围内,统计的减少类数。尝试以下代码:
  1. encode course,gen(course_id)
  2. duplicates drop year family_id course,force
  3. rangestat (count) course_id, interval(year -1 0)  by(family_id course)
  4. bys family_id year: egen dupli_count=count(_n) if course_id_count>1
  5. collapse (count) a_count=course_id (mean) dupli_count, by(family_id year)
  6. bys family_id (year): replace dupli_count=0 if dupli_count==. & _n>1
  7. gen wanted=a_count-dupli_count
  8. replace wanted=a_count-a_count[_n-1]  if wanted==0
  9. drop *_count
复制代码

藤椅
zhouershimei 发表于 2020-9-23 22:41:47
DΘstinyじò 发表于 2020-9-23 16:35
假若有104家庭 2010选择的课程为:programming和piano,而在2011选择为swimming,不同于101家庭,104家庭在 ...
大神好!非常感谢你的耐心回复!!!但是你说的104家庭这种情况我仍然想赋值为2,因为既有增加,又有减少。(单纯的增加,没有减少,才赋值为1.)这种情况应该怎么处理呢?

板凳
zhouershimei 发表于 2020-9-24 06:46:30 来自手机
DΘstinyじò 发表于 2020-9-23 16:35
假若有104家庭 2010选择的课程为:programming和piano,而在2011选择为swimming,不同于101家庭,104家庭在 ...
为了避免数字赋值造成误解,或者可以用字母赋值

报纸
DΘstinyじò 发表于 2020-9-25 00:04:43
zhouershimei 发表于 2020-9-24 06:46
为了避免数字赋值造成误解,或者可以赋值更清晰:如果一个家庭比上一年单纯增加了兴趣班(原基础不变的情 ...
  1. encode course,gen(course_id)
  2. bys year family_id : egen temp1=nvals(course)
  3. cap program drop mycount
  4. program mycount
  5.         egen temp2=nvals(course)
  6. end
  7. rangerun mycount, interval(year -1 0) use(course_id)  by(family_id )
  8. collapse (mean) temp*, by(year family_id)
  9. gen wanted=""
  10. bys family_id (year):replace wanted="完全不变"  if   temp1==temp2 & temp1==temp1[_n-1] & _n>1  
  11. bys family_id (year):replace wanted="单纯增加"  if   temp1==temp2 & temp2> temp1[_n-1] & _n>1
  12. bys family_id (year):replace wanted="单纯减少"  if   temp1< temp2 & temp2==temp1[_n-1] & _n>1
  13. bys family_id (year):replace wanted="相离"      if   temp1 + temp1[_n-1]==temp2  & _n>1
  14. bys family_id (year):replace wanted="相交"      if   wanted=="" & _n>1
  15. label variable temp1 "当年的课程种类数目"
  16. label variable temp2 "当年和上一年度的课程种类数目"
  17. /*
  18. 家庭100——完全不变
  19. 家庭101——相交
  20. 家庭102——单纯增加
  21. 家庭103——单纯减少
  22. 家庭104——相离
  23. */
复制代码
注:不适应于年份数据不连续的情况,每一个家庭在每一个年份需要至少一个课程。(如是这种情况,再交流~)
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 3 + 3 + 3 热心帮助其他会员

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

地板
zhouershimei 发表于 2020-9-25 11:01:17
DΘstinyじò 发表于 2020-9-25 00:04
注:不适应于年份数据不连续的情况,每一个家庭在每一个年份需要至少一个课程。(如是这种情况,再交流~) ...
太感谢了!!大神太牛了!!太膜拜!!感激涕零!!(自己摸索了很久都没有解决)一万个赞&#128077;&#128077;

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

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