251:將SAS數據集批量輸出到EXCEL并將列名替換成中文字段標簽

這是寫給 寫DVP的臨床SP的,其他SP可以不用看。

最近有一位讀者咨詢:如何將SAS數據集里面變量的label作為輸出EXCEL的列名,并同時把幾十個數據集都這樣處理,輸出到一個EXCEL里面。

當時把方法告訴了她,可能她不是SP,并且對這方面了解比較少,具體怎么操作不清楚。我也很久沒輔助過DM進行DVP或者SDV的編寫了,她這一問,立馬讓我回想起了以前寫SDV,輸出進展報告的那段日子。

那時候數據量大,還要輸出幾十張sheet,跑完全部的報告至少需要半小時左右,然后SAS還總是報內存不足或者其他各種各樣的問題。SAS報內存不足的問題,可以通過下面這種方式輸出,但是輸出的是XLS文件,而且長得也丑。
ods tagsets.excelxp file="XXXXX路徑.xls";

ods tagsets.excelxp close;
如果想輸出XLSX后綴的EXCEL,可以通過ODS EXCEL file="XXXX.xlsx",這個方法適合數據量相對少一點的項目。然后再通過循環,就可以將SAS數據集輸出到幾十張sheet了。然后寫proc report的時候,什么都不用加,SAS就會自動將SAS數據集變量的標簽作為列名了。
proc report data=raw.&dataset;
column all;
run;
同時她們還要求要將sheet名也變成數據集的名稱,而不是直接用數據集的簡稱,比如說AE sheet要變成不良事件,其實這也可以通過循環實現。但是我看了DM發過來的RAW數據集,查看數據集的屬性的時候,發現數據集并沒有對應的表單名稱,都是空的,所以如果你們也是這樣的話,要么輸出EXCEL后自己手動改,要么導入你們的那個als,獲取所有的表單名稱,然后像程序里面一樣轉換成宏變量。

image.png

我用SDTM數據集測試了一下,程序可以實現將表單的label作為sheet名,同時需要注意的是,很多raw數據集表單名稱里有"/",""這種符號,EXCEL好像是不允許這種作為sheet名的,我在程序里也處理了。


image.png

更多的東西其實可以去SAS官網查找,我當初也是花了很多時間去研究ODS導出EXCEL,但是現在都不碰了,都是查找以前的筆記,然后重新加工程序,寫出了下面的代碼,所以決定付費,需要的話自取。

同時也上傳了利用ods tagsets.excelxp file輸出EXCEL的程序,這個看下你們用不用的到。程序拿來就是可以直接用的,我已經測試過了,你們只要改一下你們的路徑和邏輯庫就好了。

簡書的讀者去另一個地方獲取代碼

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容