我有一列数据后,让我们说,它看起来是这样的:SAS:删除所有文字字符
This is text: part 2
This is text
This is also text: part 3
我需要删除一切后:使所有三行数据将显示:
This is text
This is text
This is also text
有没有人知道如何做到这一点在SAS?我通常会删除标点,等等......但还没有需要删除一个字符后的所有内容。
任何指导将不胜感激 - 谢谢。
我有一列数据后,让我们说,它看起来是这样的:SAS:删除所有文字字符
This is text: part 2
This is text
This is also text: part 3
我需要删除一切后:使所有三行数据将显示:
This is text
This is text
This is also text
有没有人知道如何做到这一点在SAS?我通常会删除标点,等等......但还没有需要删除一个字符后的所有内容。
任何指导将不胜感激 - 谢谢。
的SCAN()
功能会为这项工作做得很好。
want = scan(have,1,':');
唯一的问题可能是如果文本以冒号开头。如果文本以冒号(或多个冒号)开头,则SCAN(have,1,':')
将返回引导冒号后面的第一个文本块。如果将修饰符'M'添加到SCAN()
调用中,那么它会将额外的冒号视为表示缺少的值并返回一个空字符串。
want=scan(have,1,':','m');
data test;
a1='This is text: part 2';
a = substr(a1,1,index(a1,':') - 1);
output;
run;
能使用'扫描(有,-2, ':')',如果它会以一个冒号开始,不是吗?虽然如果它不包含冒号,那么它会失败......没有理想的解决方案,我猜没有检查。 – Joe
@joe更新了解决领先冒号的问题。 – Tom
啊,我忘记了M修饰符 - 非常好。 – Joe