*! version 1.0 07jan2025 Xiaokang Wu

Title

citytoprovince -- 根据城市字段生成对应的省份字段

Syntax

citytoprovince varname [, options]

Main
generate(newvar) 创建名为 newvar 的新省份变量

replace 替换已存在的 province 变量

注：必须指定 generate() 或 replace 选项之一。

Description

citytoprovince 根据包含中国城市名称的变量生成对应的省份（省/自治区/直辖市/特别行政区）名称。
该程序能够识别城市的全称和简称，自动处理各种行政级别后缀。

程序内置了完整的中国地级及以上行政区划映射表，包括：

• 4个直辖市（北京、天津、上海、重庆）

• 23个省

• 5个自治区

• 2个特别行政区（香港、澳门）

• 所有地级市、自治州、地区、盟

Options

Main

generate(newvar) 创建一个名为 newvar 的新字符串变量，包含对应的省份名称。
如果指定的变量名已存在，程序将报错。

replace 创建或替换名为 province 的变量。如果 province 变量已存在，
将先删除该变量再重新创建。

注意：generate() 和 replace 选项不能同时使用。

Remarks

citytoprovince 能够处理多种格式的城市名称：

1. 完整名称：如"南京市"、"临夏回族自治州"

2. 去掉后缀的名称：如"南京"、"临夏"

3. 常用简称：如"乌市"（乌鲁木齐）、"呼市"（呼和浩特）

程序会自动去除以下后缀进行匹配：

• 市、地区、盟

• 自治州及各种民族自治州全称

• 特别行政区

• 自治县

对于无法匹配的城市名称，程序会保留空值并在结果中报告。

Examples

基本使用：生成新的省份变量

. citytoprovince city, generate(province_chn)

替换已存在的province变量

. citytoprovince city, replace

完整示例：

. clear

. input str20 city

"南京市"

"南京"

"乌鲁木齐市"

"乌市"

"临夏回族自治州"

"临夏"

"香港特别行政区"

"香港"

end

. citytoprovince city, gen(province)

. list

处理含有缺失值的数据：

. sysuse auto, clear

. gen city = "北京" if foreign == 0

. replace city = "上海" if foreign == 1

. citytoprovince city, gen(province)

. tab province foreign

与其他命令结合使用：

. use mydata, clear

. citytoprovince city_name, gen(prov)

. encode prov, gen(prov_code)

. bysort prov: gen prov_count = _N

Stored results

citytoprovince 在执行后显示匹配统计信息：

• 成功匹配的记录数

• 未匹配的记录数

• 未匹配城市的列表（如果存在）

Author

Xiaokang Wu

Nanjing University of Science and Technology

Email: mailto:wuxk@njust.edu.cn

citytoprovince.ado - 根据城市字段生成对应的省份字段

Version 1.0.0

2025年9月9日开发

Also see

帮助：encode, decode, merge, replace

在线：Stata官方网站