如何在SAS中将fipsStateCode与fipscountycode合并为单个FIPS代码变量
在单个SAS数据集中生成完整FIPS代码变量
完整的FIPS县代码由2位州FIPS代码 + 3位县FIPS代码组成,核心是确保县代码为3位(不足补前导零)、州代码为2位,再将两者拼接。以下分两种常见场景给出实现代码:
场景1:原始FIPS变量为数值型
如果fipsStateCode和fipscountycode是数值型(比如州代码存为1而不是01),需要先转为固定长度的字符型再拼接:
data want; set have; /* 转2位州代码字符(补前导零) */ state_fips_char = put(fipsStateCode, z2.); /* 转3位县代码字符(补前导零) */ county_fips_char = put(fipscountycode, z3.); /* 拼接生成完整FIPS字符型变量 */ fips_code = cats(state_fips_char, county_fips_char); /* 可选:转为数值型FIPS变量(如果需要) */ fips_code_num = input(fips_code, 5.); /* 清理临时变量 */ drop state_fips_char county_fips_char; run;
场景2:原始FIPS变量为字符型
如果原始变量是字符型但长度不固定(比如州代码存为"1"而不是"01"),先转为数值再转回固定长度字符:
data want; set have; /* 标准化州代码为2位字符 */ state_fips_char = put(input(fipsStateCode, best2.), z2.); /* 标准化县代码为3位字符 */ county_fips_char = put(input(fipscountycode, best3.), z3.); /* 拼接生成完整FIPS代码 */ fips_code = cats(state_fips_char, county_fips_char); drop state_fips_char county_fips_char; run;
简化情况:原始变量已为固定长度字符
如果fipsStateCode已经是2位字符、fipscountycode已经是3位字符,直接拼接即可:
data want; set have; fips_code = cats(fipsStateCode, fipscountycode); run;
关键说明
z2./z3.格式:强制生成固定长度的字符,自动补前导零,这是保证FIPS代码格式正确的核心。cats()函数:自动忽略变量中的空格,比直接用||拼接更稳妥。
内容的提问来源于stack exchange,提问作者Adrianna
相关产品推荐
相关产品推荐

