日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sas table将缺失值计入百分比_医药SAS编程及应用之爱情草全部发芽啦

發布時間:2024/2/28 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sas table将缺失值计入百分比_医药SAS编程及应用之爱情草全部发芽啦 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在DATA步的第一個語句,即讀數據之前定義變量的屬性,有這樣幾個優點:

  • 定義變量的長度、格式,名稱等屬性,對新生成的變量而言,這是必須的。如果不定義新變量的長度,可能會造成變量取值截尾。這里只是說可能,偶爾偷懶也不是完全不可以,但要保證不能出錯。

  • 新生成的變量會出現在數據集的最前面,方便確認變量衍生過程是否正確。

  • 數值型變量沒有定義長度的說法,我們可以統一給字符型變量賦予一個合適的長度,并全部寫在一個位置,這很大程序上帶來了程序編寫和更新的方便。

  • 對長度大于200個字符的,我們在Log中顯示Note。注意這里沒有寫成真正的"ERROR",這是為了防止在搜索Log錯誤時,把這條Note當成是Error。

  • 對字符型變量去首尾空格常常是有必要的(例如,有的原始變量在錄入時包括空格),尤其是數值型變量轉換成字符型變量的時候。

CATX函數可以以指定的分隔符連接字符串或變量,如果所連接變量有變量為空,則不會出現多余的分隔符。

在SDTMIG 3.2版本,EPOCH、VISIT、TAETORD等變量對某些domain來說是Permissable,但在新一版的SDTMIG 3.3中,可能就是一個標準變量了。所以在對數據做驗證的時候,要明確所使用的各種文件版本。

OUTPUT語句用于輸出數據。我們常規的DATA步沒有使用OUTPUT語句也能產生數據集,是因為它默認輸出的,如果要基于一定的條件而選擇性的輸出數據,那就要使用OUTPUT語句。OUTPUT語句的執行可以形象地理解為:前面的條件讓合適的數據排在前面,后面的條件讓合適的數據排在后面,變量值可能會一直RETAIN。在使用OUTPUT語句時要小心,各種意想不到的錯誤可能都會出現,還不好查出原因在哪里,為了防止可能出現的RETAIN或者其他錯誤,可以變量每次重新賦值的時候,使之初始化為缺失值

TRANWRD函數可以把字符串里的指定字符轉換成另外一指定字符。

用法:TRANWRD(Source, From, To),Replace from character sting in source with to character string。語句TRANWRD(pct,’( ‘,’ (‘),把pct=“( 10.1%)”變成pct=“ (10.1%)”,也就是把括號里面的空格變到外面,這樣一來數據緊密聯系在一起了,還能保證括號右對齊。這里前面只有一個空格,如果是1.1%會有兩個空格,那就再用一次TRANWRD函數。這樣處理會使得TFL比較好看。

對數據TRANSPOSE后形成的變量易產生缺失值,可能出現某個變量在某些行有值,有些行為空,也就是缺失的。如果需要全部替換成0或者NA,可以用ARRAY一次性處理。

如果變量較少,可以用if var=. then var=0。

但如果變量較多,用array。

array zero{*} _numeric_;

? do i=1 to dim(zero);

? ? if zero{i}=. then zero{i}=0;

?end;

*是種省略寫法,’{}’,’()’均可,dim返回數據的維度,表示數據集中所有的數值型變量的個數。也可以把_numeric_替換成具體的變量。

對字符型變量,用法類似。

array char{*} _character_;

do i=1 to dim(char);

? if missing(char(i)) then char(i)=’0’;

end;

OPTIONS SYMBOLGEN MPTINT MLOGIC;

SYMBOLGEN:在log中編譯出宏變量的具體值,可以檢查宏變量返回值的對錯。

MPTINT:把編譯出的宏變量值直接代入到程序中,形成一段完全的代碼,用于檢驗整段程序運行是否正確。

MLOGIC:標識宏程序的開始和結束,可以用于區別MACRO和一般程序。

這三個選項是用于調試MACRO的,一般在項目的SETUP程序中就寫進去,這樣一來,可以看那些GLOBAL的MACRO在這個STUDY的適用性,另外,每個Team Member也可以測試自己的宏,省去了再加OPTIONS的麻煩。不建議在Individual程序中寫類似于LIBNAME,OPTIONS之類的GLOBAL語句,全局性語言可以放在GLOBAL程序中,如SETUP.SAS。

DATA步中可用IF…THEN…來做條件判斷,SQL語句中可以用CASE…WHEN。

如果是創建一個表(SQL語言中分別叫表、行、列,對應SAS中的數據集、觀測、變量),結果就不會OUTPUT出來,那就不用加NOPRINT語句,CASE前面有逗號。

如果語句較復雜,WHEN后面可以根據運算結果來指定相應的值,簡單的語句則直接用CASE變量。用ELSE語句來表示判斷結束,而且不能是空的ELSE語句(DATA步中的SELECT WHEN可用空的OTHERWISE結尾),如果條件已經選擇完畢,用ELSE+空格表示結束字符型變量的定義,ELSE +點表示結束數值型變量的定義,或者用ELSE表示最后一個條件。如果生成的是字符型變量,建義定義一個長度,以防TRUNCATED。

只要涉及到循環,最好縮進,讓程序美觀易讀。

我們在寫Specification的時候,盡量讓它更美觀,更直接的呈現在User那邊,像下圖這種,你打開Excel,拖到這個變量的時候,它占滿了整個Excel Sheet,這樣看起來很不方便。

我們在進行各種Task時,銘記一點,你待它如初戀,它待你如真愛!

假設要以這樣一種縮進方式來呈現數據。

有的朋友使用空格來對數據進行縮進,以及獲得相應的層次感,包括各種Format,Label,Term,當然這也是可以的,在最后的表格中,把鼠標放在適當位置,指針顯示有空格。其實,我們可以使用RTF語句,比如下句完成按兩個字符一級的縮進。

Term太長可能會Wrap到下一行。

  • 如果使用空格,下一行的數據會直接頂格,沒有體現出數據的層級。

  • 使用RTF會自動地排在相應等級,但還是個有問題,下一行的數據到底是另外一個Term,還是上一個Carry下來的呢?像這里CMCECOD就有兩行了,但其實都是同一個CMDECOD,我們再加點語句以示區分:如果數據移到下一行,縮進一個空格。

如下圖所示,表格更好看了。

在做Table的時候,有朋友喜歡以這種方式插入一個空行,以分隔不同部分的內容,針對不具有擴展性的內容是可行的。但如果某些Summary Table是by Category、by Visit、by Name,且并不清楚要空多少行時,可以在REPORT中使用COMPUTE語句,這樣空行不會成為數據集的一部分,同時為OUTPUT服務。

如果有想寫文章的朋友,請聯系我,我需要你,內容不限!

總結

以上是生活随笔為你收集整理的sas table将缺失值计入百分比_医药SAS编程及应用之爱情草全部发芽啦的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。