從shell抓取title以及footnote信息思路

對于統(tǒng)計程序員來說,根據(jù)mock shell產(chǎn)生各種統(tǒng)計圖表是工作中很重要的部分。我們在產(chǎn)生統(tǒng)計圖表時,往往會將圖標的標題以及腳注填寫到一份EXCEL表格中,便于我們后期的輸出。
我們可以手動填寫標題以及腳注信息,但是這么做效率并不高。為了節(jié)省時間,我們可以通過VBA以及SAS編程來讀取mock shell中的標題以及腳注信息。


mock shell示例

我們可以看到,一份mock shell文件主要由標題、三線表格、腳注組成。對于產(chǎn)生標題腳注文件時,三線表格是多余的信息,會干擾我們下一步的編程。因此我們選擇使用WORD自帶的VBA來進行處理。

Sub Removetables ()
Dim oTable As Table
For Each oTable In ActiveDocument.Tables
oTable.Delete
Next oTable
End Sub

Sub DeleteImage()

For Each ishape In ActiveDocument.InlineShapes
ishape.Delete
Next ishape

For Each ishape In ActiveDocument.Shapes
ishape.Delete
Next ishape

End Sub

以上的VBA代碼,目的是清除mock shell文件中的表格以及圖片信息。之后我們選擇將清楚了表格圖片信息后的mock shell另存為文本文件(.txt file)。接著我們使用SAS讀取文本文件。

data WORK.TEST;
%let _EFIERR_ = 0;
infile 'filename.txt' delimiter='09'x MISSOVER DSD lrecl=32767 ;
length var1 $20000;
informat VAR1 $20000. ;
informat VAR2 $24. ;
informat VAR3 best32. ;
format VAR1 $20000. ;
format VAR2 $24. ;
format VAR3 best12. ;
input
VAR1  $
VAR2  $
VAR3
;
if _ERROR_ then call symputx('_EFIERR_',1);
run;
讀取的數(shù)據(jù)集
data test1;
  set test;
  where var1 ne "";
  n=_n_;
proc sort;
 by n;
run;

data test2;
  retain nn 0;
  set test1;
  by n;
  nn=nn;
  if substr(upcase(var1,1,5)) in ("TABLE","FIGUR","LISTI") then nn=nn+1;
proc sort;
by nn n;
run;

proc transpose data=test2 out=test3;
by nn;
var var1;
run;
  

我們接著選取VAR1不為空的紀錄,并通過觀測序號確定數(shù)據(jù)集排序順序,以便于后期的轉(zhuǎn)置。并根據(jù)數(shù)據(jù)的實際情況進行一定的處理。在處理好之后,我們進行轉(zhuǎn)置,即可得到標題腳注信息。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容