我的 SAS 表中有一个名为 GEOID10 的变量,它由 10-11 位数字组成。前 4-5 位数字是州和县的 FIPS 代码,后 6 位数字是人口普查数据。我想创建一个名为 TACTCE 的新变量,仅采用 GEOID10 的最后 6 位数字,并删除前 4-5 位数字。
以下是我正在使用的 GEOID10 的一些示例:
1001020700 1001020900 1001020900 1001020900 1001020900 1001021000 56035000102 56037970500 56037971600 56037971600 56037971600 56037971600 56037971600
我在 SAS 中尝试过以下代码,但它从来没有以正确的数字开始。
data My.Data;
set My.Data;
TRACTCE = input(substr(GEOID10, 5), 6.);
run;
对于 GEOID10 1001020700,此代码为我提供了 10207 而不是 020700。
data My.Data;
set My.Data;
TRACTCE = input(substr(GEOID10, 5, 6), 6.);
run;
此代码还为我提供了 GEOID10 1001020700 的 10207 而不是 020700。
data My.Data;
set My.Data;
TRACTCE = input(substr(GEOID10, 5), 10.);
run;
此代码还为我提供了 GEOID10 1001020700 的 1020700 而不是 020700。
data My.Data;
set My.Data;
TRACTCE = input(compress(substr(GEOID10, 5),, 'kd'), 10.);
run;
此代码还为我提供了 GEOID10 1001020700 的 1020700 而不是 020700。
data My.Data;
set My.Data;
TRACTCE = input(substr(GEOID10, 5, 6), 10.);
run;
此代码还为我提供了 GEOID10 1001020700 的 10207 而不是 020700。
data My.Data;
set My.Data;
TRACTCE = put(input(substr(GEOID10, 5, 6), 10.), z6.);
run;
此代码还为我提供了 GEOID10 1001020700 的 10207 而不是 020700。
我无法从你分享的内容中辨别你的字符串中实际包含的内容。
但是根据你的第一个结果,我会假设数字 1 出现在第二个位置。
23 data test;
24 GEOID10=' 1001020700';
25 TRACTCE = input(substr(GEOID10, 5), 6.);
26 put GEOID10 = $quote. TRACTCE= comma12. ;
27 run;
GEOID10=" 1001020700" TRACTCE=102,070