【stata笔记】从规律混乱的字符串中提取某个类别的字符(以CGSS2010的地区变量为例)

问题

使用CGSS2010重复某文章中的定量研究,中需要因变量“区县人均收入”。
如何在CGSS2010中为所有样本生成一个格式一的“所在区县”信息?
CGSS2010中包含区县信息的变量为S42。tab s42 发现,其中填写方式混乱, 在是否包含市级信息,是否包含“市”、“区”、县”等字样、是否包含空格等方面 存在大量不一致,无法采用统一的标记及顺序行提取。

目标

尽量避免缺失值地生成区县变量,内容为不包含地区行政级别的区县名称,一 般是2个字,也可能是1或3个字。

分析过程

使用tab查看当前填写方式形成的所有分类;

规律

1、按照标记可以分为四种类型:①含“市”且含“区/县”,②含“市”不含“区/县”,
③不含“市”但含“区/县”,④不含“市”不含“区/县”四种情况;
2、存在同时包含两个“市”字符的数据,统一认定为县级市,计划保留后一个 市的信息;
3、需要清除的符号有空格和加号“十”;

计划

基本思路

1.清除多余的空格及加号
replace
subinstr()
2.去掉市级信息,只保留县级信息
generate
replace
strpos()
usubstr()
length()
(1)带标记的:从“市”所在的顺位开始提取到最后一个字符

(2)不带标记的:观察构成,寻找其他规律,比如相同字数的值是否可以取倒数几位
3.去除末尾的“市”、“区”、“县”、“左旗”、“县级市” 等字样
4. 2~3之前可以将各记号所在顺位、字符串长度生成为工具变量,方便书写的减省

代码

use "D:\Privacy of Wal\graduate crriculum\stata\about CGSS\CGSS2010-15.dta" 
		*从s42中提取出区县名(不含区县二字)并存放到新变量
		tab s42 //分类统计查看取值及其分布
		*统一格式和生成工具值	
		replace s42=subinstr(s42," ","",.) //去除S42取值中的空格
		replace s42=subinstr(s42," ","",.) //去除S42取值中的空格
		gen shipos=(strpos(s42,"市")+2)/3 if strpos(s42,"市")!=0 //找到第一个“市”的位置
		gen quxianpos=(strpos(s42,"县")+2)/3 if strpos(s42,"县")!=0
		replace quxianpos=(strpos(s42,"区")+2)/3 if 
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值