楼主: Dreamia_Tsai
14479 8

[数据管理求助] 求问:如何从地址中提取城市名 [推广有奖]

  • 1关注
  • 0粉丝

已卖:13份资源

高中生

37%

还不是VIP/贵宾

-

威望
0
论坛币
72 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
582 点
帖子
15
精华
0
在线时间
21 小时
注册时间
2014-7-31
最后登录
2018-6-29

楼主
Dreamia_Tsai 发表于 2017-8-8 16:07:09 来自手机 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
如图所示,地址中有的含省份,有的不含,城市名长度也不同,怎么用substr提取城市名呢?code怎么写呢

stata小白,求大神们解答时尽量详细,无限感激 image0.jpg
二维码

扫码加我 拉你入群

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

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

关键词:SUBSTR Stata code subs 如图所示

沙发
也是晴天 在职认证  学生认证  发表于 2017-8-9 08:49:14
从你的数据可以看出,城市名分布有两种情况,一是在某某省后面,如安徽省安庆市,所以用
gen city=substr(address,7,6) if substr(address,5,2)=="省"
二是直接的直辖市,如北京市,用
replace city=substr(address,1,6) if substr(address,5,2)!="省"
已有 3 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
葫芦娃大王 + 10 + 10 精彩帖子
Dreamia_Tsai + 1 + 1 + 1 精彩帖子
黃河泉 + 3 + 3 + 3 观点有启发

总评分: 经验 + 10  论坛币 + 10  学术水平 + 4  热心指数 + 4  信用等级 + 4   查看全部评分

藤椅
黃河泉 在职认证  发表于 2017-8-9 17:06:51
也是晴天 发表于 2017-8-9 08:49
从你的数据可以看出,城市名分布有两种情况,一是在某某省后面,如安徽省安庆市,所以用
gen city=substr( ...
你的建议很不错,只是担心不知道所有资料都有此规则!是否省或市的名字都是两个字呢?

板凳
wshf666666 发表于 2017-8-9 18:49:03 来自手机
黃河泉 发表于 2017-8-9 17:06
你的建议很不错,只是担心不知道所有资料都有此规则!是否省或市的名字都是两个字呢?
老师说得有理!有些省名是三个字的,如黑龙江省,有的省可能习惯上不加省字,如内蒙古。

报纸
黃河泉 在职认证  发表于 2017-8-9 18:54:54
wshf666666 发表于 2017-8-9 18:49
老师说得有理!有些省名是三个字的,如黑龙江省,有的省可能习惯上不加省字,如内蒙古。
谢谢你的 confirm;但即使是这样,如果我们有中国所有省的名字(一个档)与所有市的名字(另一个档) ,应该还是有方法可以区隔出来!

地板
也是晴天 在职认证  学生认证  发表于 2017-8-10 13:52:00
黃河泉 发表于 2017-8-9 17:06
你的建议很不错,只是担心不知道所有资料都有此规则!是否省或市的名字都是两个字呢?
像黑龙江省这种你就替换时加上一个或者:
replace city=substr(address,1,6) if substr(address,5,2)!="省"& substr(address,5,2)=="市"
表示将第三个字不是省且第第三个是"市"的替换为某某市
replace city=substr(address,9,6) if substr(address,7,2)=="省"  将第四个字为省的替换为后面三个字的市,类似的你可以考虑四个字省份四个字市名的这种,这种应该比较少

7
黃河泉 在职认证  发表于 2017-8-10 15:42:54
也是晴天 发表于 2017-8-10 13:52
像黑龙江省这种你就替换时加上一个或者:
replace city=substr(address,1,6) if substr(address,5,2)!=" ...
整个问题重点在于"同一个变量中" address 中(省)有的是两个字、有的是三个字(或更多),这样的指令似乎无法同时考量!(市也有类似问题!)

8
也是晴天 在职认证  学生认证  发表于 2017-8-10 17:30:37
黃河泉 发表于 2017-8-10 15:42
整个问题重点在于"同一个变量中" address 中(省)有的是两个字、有的是三个字(或更多),这样的指令似乎 ...
. egen b=ends(a),punct("省") tri last
. egen c=ends(b),punct("市") tri
. replace c=substr(a,7,4) if substr(a,1,2)=="内"
. gen d="市"
. gen city=c+d 1502357298(1).png
已有 3 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
葫芦娃大王 + 10 + 10 精彩帖子
Dreamia_Tsai + 1 + 1 + 1 精彩帖子
黃河泉 + 5 + 5 + 5 好的意见建议

总评分: 经验 + 10  论坛币 + 10  学术水平 + 6  热心指数 + 6  信用等级 + 6   查看全部评分

9
木槿丫 学生认证  发表于 2023-6-7 08:55:05
也是晴天 发表于 2017-8-10 17:30
. egen b=ends(a),punct("省") tri last
. egen c=ends(b),punct("市") tri
. replace c=substr(a,7,4) ...
您好,请问下如果在地址最后有省道旁等字样,它直接识别最后一个省字之前的内容为省份名称,如何能够让其识别第一个省字之前为省份,而之后的内容为城市内容呢

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

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