楼主: hawk_lyj
5023 10

[其他] 急切寻求帮助:如何将中国家庭动态跟踪调查中的1.0.101等职业编码合并成十大职业 [推广有奖]

  • 4关注
  • 0粉丝

已卖:1份资源

本科生

6%

还不是VIP/贵宾

-

威望
0
论坛币
506 个
通用积分
0.0001
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
1525 点
帖子
71
精华
0
在线时间
65 小时
注册时间
2009-11-29
最后登录
2022-5-5

楼主
hawk_lyj 发表于 2012-9-17 22:32:22 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请问大家:我现正在使用“中国家庭动态跟踪调查”的数据。但其中遇到的问题是: 变量fc1_9(主要职业)填写的是职业编码,诸如1.0.106,1.0.102,1.0.103等职业编码(和人口普查的职业编码类似,但和人口普查不同的其编码带有“.”)。我试着按人口普查的方法根据其职业编码将其合并成了十大职业,但未成功。我用的具体命令为:

*******根据fc1_9主要职业的职业编码生成一八大类的职业
gen zhiye8=0
replace zhiye8=1 if  fc1_9>=1.0.101 & fc1_9<=1.9.193
replace zhiye8=2 if  fc1_9>=2.1.201 & fc1_9<=2.1.220
replace zhiye8=3 if  fc1_9>=3.1.301 & fc1_9<=3.3.381
replace zhiye8=4 if  fc1_9>=4.1.401 & fc1_9<=4.1.413
replace zhiye8=5 if  fc1_9>=5.1.501 & fc1_9<=5.3.540
replace zhiye8=6 if  fc1_9>=6.1.601 & fc1_9<=6.5.626
replace zhiye8=7 if  fc1_9>=7.1.701 & fc1_9<=7.1.739
replace zhiye8=8 if  fc1_9>=8.1.811 & fc1_9<=9.1.909



垦请各位高手指教。  
二维码

扫码加我 拉你入群

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

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

关键词:中国家庭 求帮助 replace place 人口普查 中国家庭 人口普查 动态 如何 职业

沙发
夸克之一 发表于 2012-9-17 22:53:18
fc1_9 是string 变量,当然无法比较大小。。

藤椅
张甄甄 发表于 2012-9-17 23:05:22
不懂地飘过,表示亚历山大

板凳
hawk_lyj 发表于 2012-9-17 23:14:29
夸克之一 发表于 2012-9-17 22:53
fc1_9 是string 变量,当然无法比较大小。。
夸克之一 ,非常感谢您提醒。fc1_9确实是string,可是我已将其变换成数值型了(具体的命令为:encode fcl_9,generate zhiye)
但还是没法转换,能否帮我详细说下如何处理,如写下详细的命令

报纸
夸克之一 发表于 2012-9-18 00:01:58
你这么干之后,zhiye就不再是表明上形式了。

你可以tab zhiye, nol看一下。

只需要按照新tab出来的表格设定你的职业分类。

地板
sungmoo 发表于 2012-9-18 06:43:23
g v=real(subinstr(fc1_9,".","",.))
g c=int(v/10000)

7
hawk_lyj 发表于 2012-9-18 07:36:29
夸克之一 发表于 2012-9-18 00:01
你这么干之后,zhiye就不再是表明上形式了。

你可以tab zhiye, nol看一下。
tab zhiye了,其频数分析表还是和fc1-9相同,将其命令改了,还是不行,红颜色提示说multiple conflicting factor levels specified。我用的命令为:gen zhiye8=0
replace zhiye8=1 if zhiye>=1.0.101 & zhiye<=1.9.193
replace zhiye8=2 if zhiye>=2.1.201 & zhiye<=2.1.220
replace zhiye8=3 if zhiye>=3.1.301 & zhiye<=3.3.381
replace zhiye8=4 if zhiye>=4.1.401 & zhiye<=4.1.413
replace zhiye8=5 if zhiye>=5.1.501 & zhiye<=5.3.540
replace zhiye8=6 if zhiye>=6.1.601 & zhiye<=6.5.626
replace zhiye8=7 if zhiye>=7.1.701 & zhiye<=7.1.739
replace zhiye8=8 if zhiye>=8.1.811 & zhiye<=9.1.909

8
hawk_lyj 发表于 2012-9-18 07:43:23
sungmoo 发表于 2012-9-18 06:43
g v=real(subinstr(fc1_9,".","",.))
g c=int(v/10000)
sungmoo:谢谢您。能否再帮我看看和解释一下您的命令。我在STATA中试了下,有错误。红色字体提示说:too few ')' or ']'   

9
夸克之一 发表于 2012-9-18 08:47:48
hawk_lyj 发表于 2012-9-18 08:36
tab zhiye了,其频数分析表还是和fc1-9相同,将其命令改了,还是不行,红颜色提示说multiple conflicting ...
你可能没有理解我的意思。你encode之后,STATA就把原来的类别重新安排,从1开始排序。

例如1.0.101现在可能为1, 1.0.102 可能为2,以此类推。

所以,你看到得1.0.101实际代表的数值为1,你用原来的命令肯定是错的。

10
夸克之一 发表于 2012-9-18 08:52:56
hawk_lyj 发表于 2012-9-18 08:43
sungmoo:谢谢您。能否再帮我看看和解释一下您的命令。我在STATA中试了下,有错误。红色字体提示说:too f ...
先把string变量中的点去掉。然后就形成了一个五位数,缩小1万倍之后就变成1.XXXX, 2.XXXX, 3.XXXX, 随后用int命令取整数。



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

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