SAS 中的 Substr 命令无法正常工作

问题描述 投票:0回答:1

我的 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。

sas substr census
1个回答
0
投票

我无法从你分享的内容中辨别你的字符串中实际包含的内容。

但是根据你的第一个结果,我会假设数字 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
© www.soinside.com 2019 - 2024. All rights reserved.