2014-12-02 39 views
2

我們試圖從csv中讀取主要具有格式爲39.9%的值的列,但也有一些值爲's'。我們不相信我們可以用信息清楚地閱讀本專欄。有沒有辦法做到這一點乾淨,或者我們需要首先輸入字符串?以百分號表示字符和數字在列中閱讀

+1

首先,我將創建一個STAGE(TEMP)數據集,從CSV文件中導入AS IS值。然後,在我的最終數據集上,執行數據管理語句,使我可以擺脫「S」或給它顯着的價值。 – Salva 2014-12-02 19:44:18

回答

4

這取決於你想要的數據。如果「S」的含義是「跳過」或類似的意思,你希望它是一個缺失值,否則獲得一個數字結果,你可以通過兩種方式來做到這一點。

首先,您可以使用PERCENTw.d信息閱讀它,並且包含??以告訴解析器不要 擔心無效數據 - 自動使其丟失。

data test; 
    infile datalines truncover; 
    input x ??percent9.3; 
datalines; 
BLANK 
39.4% 
38.3% 
DUMMY 
S 
IDONTKNOW 
49.5% 
;;;; 
run; 

這裏所有非數值的值將變爲.。第二,如果你有幾個不同的字符值,並且它們總是單個字母字符,那麼你可以閱讀它們作爲特殊的缺失。 SAS不僅有一個缺失/空值,而是28; .,.A.Z._。您可以使用missing語句將輸入中的特定字母定義爲缺失。

missing s d r; *skip, don't know, refuse; 
data test; 
    infile datalines truncover; 
    input x percent9.3; 
datalines; 
37.5% 
38.3% 
S 
49.3% 
D 
R 
R 
18.4% 
;;;; 
run; 
missing; 

當您打開數據集時,數據會顯示S,D,R;這些值是缺失值,不會用於計算proc means等,但是可以區分。您可以使用if missing(x) then ...類型語法來確定是否缺少x(if x=.將不起作用,因爲這些值都不是.)。這隻適用於單個字符。如果您願意,您可以將它與??方法結合使用(然後任何不在missing聲明中的內容將成爲常規.缺失)。

如上所示,您可以將這些字母的處理方式清除爲missing;,否則它將持續保留您的會話。

+0

Upvoted提到'失蹤'聲明 - 不知道那個! – user667489 2014-12-02 22:18:25