2017-03-01 118 views
0

我有兩個我正在合併的數據集(稱爲「趨勢」和「保險」),並且都有類似的變量。其中一個類似的變量是「Race」,除了「趨勢」數據集外,Excel已將其編碼爲字符變量,而在「保險」數據集中,Excel將其編碼爲數字。當然,如果它們不是同一類型,我不能合併這兩個變量,並且我嘗試在「格式」選項下將類型更改爲Excel中的數字。它似乎沒有工作。一旦我用SAS重新導入我的XLS文件,它仍然說「Race」是字符,而不是數字。轉換變量類型後,所有觀察值都下降SAS

於是,我就做轉換的SAS,像這樣:

DATA trends; 
new = input(Race, 8.); 
drop Race; 
RENAME new = Race; 
RUN; 

這裏的輸出。

NOTE: Numeric values have been converted to character values at the places 
given by: 
(Line):(Column). 
66:13 
NOTE: Variable Race is uninitialized. 
NOTE: The data set WORK.TRENDS has 1 observations and 1 variables. 
NOTE: DATA statement used (Total process time): 
     real time   0.01 seconds 
     cpu time   0.00 seconds 

但是當我PROC CONTENTS DATA =趨勢;在新數據集中根本沒有觀察結果。應該有超過800個觀察值和超過20個變量,就像我最初將XLS文件導入到SAS時一樣。

這裏是PROC內容輸出看起來像「種族」轉換爲數字後:

Obs Race 
1 . 

發生了什麼事我所有的意見和其他變量?基本上,現在缺少整個數據集「趨勢」。

+0

除了我指出的錯誤之外,您應該知道可能有更好的方法來處理這個問題(通過修改導入語句和/或以不同方式導入)。在這裏Excel不一定是錯誤的(因爲Excel大多沒有「類型」);它更可能是輸入轉換。隨意就此提出一個單獨的問題,或者直接瀏覽有關導入設置類型的問題。 – Joe

回答

1
DATA trends; 
new = input(Race, 8.); 
drop Race; 
RENAME new = Race; 
RUN; 

SAS在哪裏獲取race的輸入數據?您需要使用set語句從已存在的數據集中獲取它,或者從inputinfile中獲取它以從文本文件中獲取它。

在這種情況下,它聽起來像它應該是:

DATA trends; 
    set trends; 
    new = input(Race, 8.); 
    drop Race; 
    RENAME new = Race; 
RUN; 

雖然我總是推薦一個不同的名稱爲新的數據集,因爲如果你發現一些錯誤,你不能重新運行此步驟。例如data trends_racenum; set trends;...會很好(顯示它有數字競賽)。

+0

謝謝,但我按照你的建議做了,所做的一切就是讓SAS返回一大堆錯誤。我非常沮喪地試圖處理來自Excel的數據。我得到的所有問題都是問題。我正在考慮將我的電子表格導出到MS Access中,然後導入到SAS中。也許這將有助於解決問題。 – lady8506

+0

當然有時確實有助於解決問題。如果您正在使用Enterprise Guide,則還可以使用「導入文件任務」嚮導;這將允許您主動選擇列類型。不幸的是,Excel是一個非常差的數據庫,但常常用於此目的。 – Joe