以前關(guān)于SAS導(dǎo)出到EXCEL寫過一篇,今天繼續(xù)寫第二篇,也是今天遇到的幾個問題。
SAS導(dǎo)出數(shù)據(jù)集到excel(第一章)
在DM進(jìn)行改庫的時候,往往需要進(jìn)行數(shù)據(jù)集的比較(我問過了,改庫確實是因為試驗方案有調(diào)整,然后需要重新設(shè)計CRF等),這些數(shù)據(jù)集,也是我們以后寫SDTM需要用到的數(shù)據(jù)集。
但是一個項目往往有幾十個數(shù)據(jù)集,如果你寫一個宏程序處理好了比較過程,然后你還得將這個宏復(fù)制幾十次,像下面這樣,對每一個數(shù)據(jù)集進(jìn)行操作,效率低了點。
因此,合理利用庫和循環(huán),能極大地提高你的效率,下面來看下具體怎么做:
就是這兩步,將SASHELP里面有多少數(shù)據(jù)集一下顯示出來了,原來SASHELP里面有152個數(shù)據(jù)集。庫名當(dāng)然要換成你自己的庫名。
有了數(shù)量,有了具體數(shù)據(jù)集名稱(已經(jīng)用空格分割開了),我們接下來就可以進(jìn)行處理了。
%do i=1 %to &obss;
%let rawname=%scan(&nameall.,&i.);
%end;
在這個循環(huán)里面進(jìn)行你要對數(shù)據(jù)集進(jìn)行的處理,當(dāng)然有一些小細(xì)節(jié)你可能會遇到,到時候自己慢慢琢磨吧。
當(dāng)我們對數(shù)據(jù)集進(jìn)行處理完成后,就是導(dǎo)出到EXCEL了,同樣的,我們依舊可以利用循環(huán),不用一個一個對數(shù)據(jù)集進(jìn)行輸出選項。
同樣是先獲取你數(shù)據(jù)集處理后的庫(也就是你在本地創(chuàng)建的文件夾),看看有多少數(shù)據(jù)集。
就這一個宏程序,就能將你輸出的數(shù)據(jù)集導(dǎo)出到excel,你所做的就是先創(chuàng)建文件夾,然后libname一下。注意程序中的3個位置,最好不要寫錯,要不然很有可能會報錯。
ods?excel?options( sheet_name="&dataname" )?允許你定義輸出的表名叫什么,proc print/proc report都可以用,因為DM那邊要求以變量的label作為列標(biāo)題,所以用了label選項。noobs是因為用proc print輸出的時候,excel會顯示前面的順序,所以要取消就才用了這個選項。
因為這次數(shù)據(jù)量比較少,所以用proc report/proc print也沒有報內(nèi)存不足的錯誤,至于怎么解決,以后再說。
感覺自己就是懶,然后想著法子看看能不能簡化程序,在這個過程中學(xué)到了很多,最重要的是效率提高了很多。
**************************************************
天氣忽然就轉(zhuǎn)涼了,前天還是熱氣騰騰,今天就得穿上秋衣了,天氣太反常了,秋天也來的太晚了。大家記得多穿衣服,別感冒了。
想想自己好像快10個月沒有得過感冒了,上次挺嚴(yán)重的我記得是在一月份,其他即使有也是很快就好了。不知道是因為成年人本身就比較少生病還是因為我經(jīng)常鍛煉的原因。