2015-11-17 102 views
1

我有一列數據後,讓我們說,它看起來是這樣的: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?我通常會刪除標點,等等......但還沒有需要刪除一個字符後的所有內容。

任何指導將不勝感激 - 謝謝。

回答

5

SCAN()功能會爲這項工作做得很好。

want = scan(have,1,':'); 

唯一的問題可能是如果文本以冒號開頭。如果文本以冒號(或多個冒號)開頭,則SCAN(have,1,':')將返回引導冒號後面的第一個文本塊。如果將修飾符'M'添加到SCAN()調用中,那麼它會將額外的冒號視爲表示缺少的值並返回一個空字符串。

want=scan(have,1,':','m'); 
+0

能使用'掃描(有,-2, ':')',如果它會以一個冒號開始,不是嗎?雖然如果它不包含冒號,那麼它會失敗......沒有理想的解決方案,我猜沒有檢查。 – Joe

+0

@joe更新瞭解決領先冒號的問題。 – Tom

+0

啊,我忘記了M修飾符 - 非常好。 – Joe

0
data test; 
a1='This is text: part 2'; 
a = substr(a1,1,index(a1,':') - 1); 
output; 
run;