2017-07-25 139 views
1

我期待在SAS中創建自定義格式,將NA,EU和AF等大陸代碼轉換爲北美,歐洲和非洲。一切都已建立,我有一個.csv文件包含國家和他們的大陸代碼的SAS讀數,我可以打印一張表格,顯示每個國家的國家代碼。現在我只想使用自定義格式將代碼轉換爲大陸名稱。到目前爲止,我有以下的(我已經錯過了所有數據的步驟,因爲這工作正常):SAS中的自定義格式

LIBNAME newlib 'C:\Users\C*****\Documents\My WPS Files'; 

PROC FORMAT lib = newlib; 
VALUE $cont 
    'AS' = 'Asia' 
    'EU' = 'Europe' 
    'NA' = 'North America' 
    'SA' = 'South America' 
    'AF' = 'Africa' 
    'OC' = 'Oceania' 
    '' = 'Unknown'; 
RUN; 

PROC PRINT DATA = newlib.life_ex (OBS = 10) NOOBS; 
    TITLE 'Top 10 Life Expectancies in 2010'; 
    VAR Country YR2010 Continent; 
    FORMAT Continent$cont.; 
RUN; 

如果我跑,我得到了下面的錯誤。

2947  FORMAT Continent$cont.; 
        ^
ERROR: Format $cont was not found or could not be loaded 

因爲我下面我在這工作得很好其它SAS程序以前使用過,但是這一次將不會執行的具體步驟,我不明白這一點。如果我刪除FORMAT Continent $ cont。行,該程序運行完美無誤,但顯然我的代碼不轉換。任何幫助?

回答

1

嘗試:

options insert=(fmtsearch=newlib); 

這段代碼告訴SAS在哪裏可以找到格式(因爲它沒有存儲在默認的WORK庫)。

它需要在之前執行使用格式,以便SAS知道在哪裏搜索它。所以在這種情況下,在步驟proc print之前。

如果上面的選項不能正常工作(應該)嘗試:

options fmtsearch=(newlib work); 

這種方法的問題是,你必須確定和建立整個搜索路徑(而不是插入的新路徑開始)

+0

我以爲在PRINT PRINT步驟中提到該庫會像我在之前的程序中那樣做。我不確定我需要把這個OPTIONS命令的確切位置。 –

+0

我更新了答案,它需要在庫定義之後和格式被調用的地方之前。它不能自動使用的原因是你使用'proc format'中的'lib ='選項將格式保存爲特定庫中的永久格式。該庫不會自動添加到格式搜索路徑中(考慮可伸縮性 - 如果您擁有數百萬個格式定義,則不需要它們全部定義和搜索) –

+0

如果它以前工作過,則必須具有搜索路徑中的該庫。我在SAS Studio中測試了它,它工作正常.. –