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