全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
11910 11
2015-03-30
悬赏 500 个论坛币 已解决

我在处理chip城镇数据时遇到的问题,家庭代码为code是字符型的,个体在家庭的编号familynumber为数值型的,我想用这两个变量合并成一个可以确认个体身份的ID。试过了如下处理方法:
1、把code变为数值型的,
采用destring code,replace force命令,得到数值型的code,随后利用公式
ge id=code*100+familynumber,结果发现id所显示的结果跟手工计算的完全不一样(大部分id居然是相同的,这可能跟科学计数表示法转换格式从而四舍五入有关)。

2、把所有变量转成字符型的加起来,
     ge a=0
    tostring a,replace
   tostring familynumber,replace
   ge id=code+a+familynumber  (添加a是为了保证code和familynumber中间有个0,因为familynumber都是小于10的)
   destring id,replace force
提取到了新的id,看起来结果不错,我就duplicates report id检查下重复值,发现有2000多个,
跟duplicates report code familynumber的结果完全不一样。

希望了解的朋友或者处理过chip城镇数据的朋友给予指导,定重谢,在线等大家的回复。

求助.dta
大小:(307.05 KB)

 马上下载




最佳答案

liuding1111 查看完整内容

楼主首先要处理缺漏值,list if code == "." | familynumber == . 结果显示familynumber变量含有三个缺漏值,首先删除这三个观察值,然后使用命令: egen id = group(code familynumber) 使用duplicates report id 只有有六个重复值,再使用duplicates drop id, force 删除其中三个,就ok了,包括处理缺漏值,总计删除六个观察值,其余每个id都是独立的,应该比较理想吧。
二维码

扫码加我 拉你入群

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

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

全部回复
2015-3-30 17:23:51
楼主首先要处理缺漏值,list if code == "." | familynumber == .
结果显示familynumber变量含有三个缺漏值,首先删除这三个观察值,然后使用命令:
egen id = group(code familynumber)
使用duplicates report id
只有有六个重复值,再使用duplicates drop id, force
删除其中三个,就ok了,包括处理缺漏值,总计删除六个观察值,其余每个id都是独立的,应该比较理想吧。
二维码

扫码加我 拉你入群

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

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

2015-3-30 18:38:02
为什么不直接使用字符型的id呢?
二维码

扫码加我 拉你入群

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

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

2015-3-30 20:56:12
liuding1111 发表于 2015-3-30 19:30
楼主首先要处理缺漏值,list if code == "." | familynumber == .
结果显示familynumber变量含有三个缺漏 ...
你好,需要先把code转成字符型吧,直接用destring 还是用encode,destring可以转化成黑色字符型,encode转化为蓝色。
二维码

扫码加我 拉你入群

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

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

2015-3-30 21:03:49
楼主,您好!

您是想把code和familynumber凑在一起成为一个新变量是吧?

试试用egen和concat连用吧,以下是列子:
复制代码
二维码

扫码加我 拉你入群

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

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

2015-3-30 21:14:02
段永飞 发表于 2015-3-30 20:56
你好,需要先把code转成字符型吧,直接用destring 还是用encode,destring可以转化成黑色字符型,encode转 ...
不能把code转化为数字,这会导致很多问题,首先,destring适用于以字符形式存储的数字变量,而你的code变量本身不是数字型变量,强制转换会导致含有字母的code值变成缺漏。encode更加行不通,这个命令主要是针对类别字符变量,比如省份、性别,使用encode后,产生的新的变量为1,2,3,4,5...,不是你需要的。如果将familynumber转化为字符,再组合,前提也需要先处理familynumber的缺漏值,最后得到的结果与不将这个变量字符化所得到的结果是一样的。
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群