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