在SAS撰寫AE.CM.MH.PR數(shù)據(jù)集過程中,經(jīng)常牽扯到外部導(dǎo)入EXCEL文件,用什么格式導(dǎo)入,如何正確導(dǎo)入,牽涉到讀入進(jìn)去的變量名,規(guī)范合規(guī)。
對于后綴為.xls格式的文件,有兩種:
一種是proc import過程的dbms=xls,一種是proc import過程的dbms=excel。
對于后綴為.xlsx格式的文件,有兩種:
一種是proc import過程的dbms=xlsx,一種是proc import過程的dbms=excel。
這兩個(gè)格式的文件,用兩種導(dǎo)入格式進(jìn)行導(dǎo)入各自有什么區(qū)別呢?讓我們來演示一下:
1.1xls文件用xls格式

xls文件中是存在"腫瘤-放射治療史"sheet的,因此xls用xls讀取不同

1.2xls文件用excel格式



如果改變此時(shí)的getnames=no,結(jié)果變成下圖,

此時(shí)的導(dǎo)入,依然是文件是字符型就是字符型,文件是數(shù)值型就是數(shù)值型。
假如我們想要導(dǎo)入的文件,都將所有列變?yōu)樽址?,那么xls就不可以實(shí)現(xiàn),需要將此文件另存為.xlsx后綴的文件,不可以直接修改后綴名稱,會(huì)導(dǎo)致文件損壞。
2.1后綴.xlsx文件用dbms=xlsx格式導(dǎo)入。

在一些導(dǎo)入外部文件做PT/PTCD/HLT/HLTCD的編程中,方便統(tǒng)一編程,而不至于有的字符型有的數(shù)值型。

如果getnames=NO,

2.2后綴.xlsx文件用dbms=excel格式導(dǎo)入

日志并沒有提示跟.xlsx文件用dbms=xlsx文件導(dǎo)入的格式一樣,轉(zhuǎn)為字符型,而是依然是字符型是字符型,數(shù)值型是數(shù)值型,且類似于上面1.2過程

如果改為getnames=no,結(jié)果依然沒有提示轉(zhuǎn)為字符型。結(jié)果類似于.xls文件用EXCEL轉(zhuǎn)換——有的列名顯示不出來。

因此綜上1.1-2.2所述結(jié)果,若想再導(dǎo)入外部文件的過程中省時(shí)省力:那么最好以.xlsx文件格式結(jié)尾,以.xlsx格式進(jìn)行導(dǎo)入,getnames=no 將所有變量轉(zhuǎn)為字符型,如下圖展現(xiàn)的結(jié)果。

Tips:另外,在撰寫本篇文章過程中發(fā)現(xiàn),當(dāng)類似的excel文件打開之后再用proc import過程導(dǎo)入,日志均提示文件已經(jīng)在使用中,而當(dāng)DBMS=EXCEL過程時(shí),確可以正常導(dǎo)入,且文件打開與否均能正常導(dǎo)入。
另外,如果大家每次導(dǎo)入外部excel文件或者讀取sdtm specs時(shí)候,每次關(guān)閉都很麻煩,那就要把excel文件設(shè)置成共享,親測有效?。∵@樣無論文件打不打開均可以導(dǎo)入了。
分享:用相對路徑導(dǎo)入外部的一些文件。
1.用這段代碼,放在一個(gè)程序里,保存在m5 sdtm某個(gè)程序文件夾下,會(huì)獲取路徑信息
%macro pathfind;
%if %length(%sysfunc(getoption(sysin)))>0 %then %do;
/* Batch Execution */
%sysfunc(getoption(sysin))
%end;
%else %do;
/* Interactive Execution */
%sysget(SAS_EXECFILEPATH)
%end;
%mend pathfind;
%LET _SASPROGRAMFILE = -%pathfind;
%LET m5=%substr(&_SASPROGRAMFILE,2,%INDEX(&_SASPROGRAMFILE.,\tabulation)-2);
2.命名第二級名稱,并通過二級名稱,創(chuàng)建三級名稱


3.命名相對路徑文件與名稱,定義宏變量為全局宏變量

4.這樣每次導(dǎo)入的時(shí)候直接調(diào)用,這個(gè)全局宏變量名稱就行

完。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 做項(xiàng)目,有時(shí)候需要導(dǎo)入外部EXCEL數(shù)據(jù)作為我們的補(bǔ)充數(shù)據(jù)集,常見的比如血藥濃度、還有一些免疫細(xì)胞檢測那些。 你們...
- SAS為其他數(shù)據(jù)管理系統(tǒng) (Database Management Systems, DBMS )中的數(shù)據(jù),提供接...
- 今天來講下企業(yè)的開發(fā)的一些功能應(yīng)用吧,就是Ajax使用,以及簡單的企業(yè)報(bào)表的導(dǎo)入導(dǎo)出,基于原有的項(xiàng)目進(jìn)行展示(其實(shí)...
- 如果在工作中,需要將保存在EXCEL的數(shù)據(jù)集內(nèi)容導(dǎo)入到SAS,并進(jìn)行變量的屬性處理,一般會(huì)涉及Import過程步。...
- 一、sheet名字過長的問題 當(dāng)我們用proc import導(dǎo)入一個(gè)excel文檔的時(shí)候,經(jīng)常會(huì)出現(xiàn)這樣的情況: ...