thymeleaf 判断checkbox是否选中_一日看尽长安花——复选框(CheckBox)数据清洗和统计的SAS实现...
CheckBox(復選框)數據通常來自于問卷調查中的多項選擇題。一般在數據錄入的時候為了方便錄入會用“,”作為分隔符,同時記錄多種選擇,以下形式出現(變量PastTreatment):
變量PastTreatment指曾經接受過哪些歷史治療,有的患者可能沒有接受過治療,有些患者可能曾經接受過1種治療(比如吃某一種藥物),還有些患者可能曾經接受過多種治療(比如吃過某幾種藥物)。所以這個問題可以搜集到的數據是多種多樣的。
根據這個數據集的數據字典的說明,PastTreatment一共有8個選項,范圍為0-7,其中0代表未接受過歷史治療,1-7分別代表7種不同的歷史治療方式。
上圖中目前針對當前CheckBox形式的變量PastTreatment,暫時無法直接進行數據分析。如果想對其進行分析首先要做的是將其轉換為多個0/1變量,即新變量var0(是=1/否=0曾經接受過治療),新變量var1(是否曾經接受過“1”類治療),新變量var2(是否曾經接受過“2”類治療),以此類推一直到新變量var7(是否接受過“7”類治療)。如下圖所示:
通過SAS實現以上的過程,使用macro非常高效,代碼如下:
%macro checkbox(data= ,var= ,a= ,b= );/*data為輸入數據集,var為需要轉換的CheckBox數據,a為起始值,b為結束值*/data out;set &data; var1=CATT(",",&var,",");%Do i=&a % to &b;&var&i=IFN(INDEXW(var1,"&i",","),1,0);%End; run; %mend checkbox; %checkbox將macro命名為CheckBox,其中函數CATT的作用是在宏變量&var前后插入分隔符“,”,這樣做的目的是為了防止當選項超出0-9的范圍,比如當選項出現“10”時,其中的十位數1可能和“1”產生混淆。此外函數IFN用于判斷結果是否為真,INDEXW用于查找字符返回其位置。
統計分析則采用PROC FREQ利用多個2*2表格進行卡方檢驗計算即可:
proc freq data=out;table group*(pasttreatment0--pasttreatment7)/chisq; run;因為pasttreatment0到pasttreatment7的內部順序是固定的,所以使用縮寫列表法“--”減少輸入內容,更加快捷。
總結
以上是生活随笔為你收集整理的thymeleaf 判断checkbox是否选中_一日看尽长安花——复选框(CheckBox)数据清洗和统计的SAS实现...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Python】matplotlib.p
- 下一篇: 【随笔】深度学习的数据增强还分在线和离线