我有一张表格如下:
PROC_TP
112
5255
5255
5255
112
5255
5255
PROC_TP是格式为6的数字。我只想获得第一个数字,所以我使用put函数将其更改为字符:
char_PROC_TP=put(PROC_TP,6.);
format char_PROC_TP $6.;
然后表格如下:
PROC_TP Char_PROC_TP
112 112
5255 5255
5255 5255
5255 5255
112 112
5255 5255
5255 5255
现在char_PROC_TP是格式为$ 6的字符。 然后我使用substr函数:
first_digit=substr(char_PROC_TP,1,1);
然后我没有任何价值。那么,任何人都可以告诉我它可能是什么问题及其解决方案。任何帮助将不胜感激。
答案 0 :(得分:4)
substrN()将采用数字参数并根据需要自动将其转换为字符并修剪前导和尾随空白。
First = SUBSTRN(num_var, 1, 1);
答案 1 :(得分:1)
这种情况正在发生,因为您转换为角色正在创建右对齐值。您可以使用6.格式的理由选项将其修复为6.-L.同样对于第一个字符使用第一个函数,默认为长度$ 1。
data test;
input PROC_TP;
char_proc_tp = put(proc_tp,6.-L);
first_digit=first(char_PROC_TP);
cards;
112
5255
5255
5255
112
5255
5255
;;;;
run;
答案 2 :(得分:0)
使用STRIP功能
char_PROC_TP=strip(put(PROC_TP,6.));
data test;
Length FIRST_DIGIT $1;
input PROC_TP;
char_proc_tp = strip(put(proc_tp,6.));
first_digit=substr(char_PROC_TP,1,1);
datalines;
112
5255
5255
5255
112
5255
5255
;