使用SAS中另一个变量的部分字符串创建新变量

使用SAS中另一个变量的部分字符串创建新变量,sas,substr,Sas,Substr,我是SAS新手,希望保留连字符“-”之前的内容以创建新变量: x abc-something efgh-everything hij-something 我试过: DATA NEW set OLD; y = (compress(substr([x], 3, 1)); RUN; PROC PRINT DATA = NEW; RUN; 要使其看起来像这样但不起作用: x abc efgh hij 尝试不使用方括号。也不需要压缩。尝试不使用方括号。压缩也不是必需的。

我是SAS新手,希望保留连字符“-”之前的内容以创建新变量:

 x 
abc-something
efgh-everything
hij-something
我试过:

DATA NEW 
    set OLD;
    y = (compress(substr([x], 3, 1));
RUN;
PROC PRINT DATA = NEW; 
RUN; 
要使其看起来像这样但不起作用:

 x 
abc
efgh
hij

尝试不使用方括号。也不需要压缩。

尝试不使用方括号。压缩也不是必需的。

使用
scan()
函数根据分隔符字符拆分字符串

当然,如果只想输入前三个字符,则使用SUBSTR()函数

y=substr(x,1,3);
使用
scan()
函数根据分隔符字符拆分字符串

当然,如果只想输入前三个字符,则使用SUBSTR()函数

y=substr(x,1,3);

你好抱歉,我更新了我的示例。因此,如果长度不同,我使用的方法不会捕获连字符前面的所有内容。我想找到一个解决方案,在连字符出现之前抓住所有东西。嗨!抱歉,我更新了我的示例。因此,如果长度不同,我使用的方法不会捕获连字符前面的所有内容。我正试图找到一个解决方案,在连字符之前抓住一切。