我有一个始终以日期开头的SAS字符串。我想从子字符串中删除日期。
数据示例如下(数据没有项目符号,包含项目符号以提高可读性)
我希望数据看起来像这样(数据没有子弹,包含子弹以提高可读性)
答案 0 :(得分:0)
这是call scan
的一个很好的用例。如果您的日期长度不变(总是10),那么您实际上并不需要这个(start
将是12然后跳到substr
,如评论中所述的user667489),但是如果不是这样会有所帮助。
data have;
length textstr $100;
input textstr $;
datalines;
10/01/2016|test_num15
11/15/2016|recom_1_test1
03/04/2017|test_0_8_i0|vacc_previous0
;;;;
run;
data want;
set have;
call scan(textstr,2,start,length,'|');
new_textstr = substr(textstr,start);
run;
如果它有用(使用length
第三个参数作为substr),它也会让你抓住第二个单词。
答案 1 :(得分:0)
索引查找'|'在字符串中的位置,然后是substr子串;或使用正则表达式。
data have;
input x $50.;
x1=substr(x,index(x,'|')+1);
x2=prxchange('s/([^_]+\|)(?=\w+)//',1,x);
cards;
10/01/2016|test_num15
11/15/2016|recom_1_test1
03/04/2017|test_0_8_i0|vacc_previous0
;
run;