江蘇省灌南縣疾病預(yù)防控制中心(222500) 封永昌 劉阿玲 丁夢(mèng)秋
多選題(multiple response)數(shù)據(jù)錄入常用的編碼方法有二分法編碼、分類法編碼和原始編碼,多分類編碼和原始編碼錄入比較簡(jiǎn)便,二分法編碼符合統(tǒng)計(jì)分析原則[1-2]。目前國(guó)內(nèi)學(xué)者對(duì)多選題數(shù)據(jù)轉(zhuǎn)換與統(tǒng)計(jì)分析,多以單個(gè)多選題為例,使用excel、SPSS或SAS軟件實(shí)現(xiàn)變量編碼轉(zhuǎn)換和統(tǒng)計(jì)分析[1-5],對(duì)于問(wèn)卷設(shè)計(jì)為多個(gè)多選題的情況并使用R軟件實(shí)現(xiàn)的討論較少。R作為一款功能卓越的免費(fèi)軟件,近年來(lái)在衛(wèi)生領(lǐng)域的應(yīng)用明顯增多[6]。本文主要介紹問(wèn)卷中一組多個(gè)多選題的判分以及原始編碼數(shù)據(jù)轉(zhuǎn)換為二分法編碼的R軟件實(shí)現(xiàn)。
設(shè)計(jì)思想?yún)⒄瘴墨I(xiàn)[1-2],此處不贅述。
1.實(shí)例:全國(guó)居民健康素養(yǎng)監(jiān)測(cè)調(diào)查問(wèn)卷(2016年江蘇版),該問(wèn)卷的主體有判斷題、單選題、多選題、情景題等4模塊共56題,其中多選題模塊有16題(未包含情景題模塊多選題),每題配置5個(gè)選項(xiàng),作答的所選項(xiàng)按其編號(hào)從小到大順序形成數(shù)字字符串錄入到Epidata數(shù)據(jù)文件中。問(wèn)卷整理需要根據(jù)正確答案對(duì)每份調(diào)查問(wèn)卷的每一題進(jìn)行判分,再根據(jù)總分和各維度得分情況判定是否具備健康素養(yǎng);現(xiàn)為進(jìn)一步挖掘問(wèn)卷更多信息,對(duì)多選題選項(xiàng)按二分法編碼[6-7]。16個(gè)多選題的標(biāo)準(zhǔn)答案依次為{123,14,123,123,34,1234,123,123,1234,1234,13,23,23,124,124,23},使用軟件R i386 3.3.2 for Windows和R Studio V1.0.44 (下載地址https://cran.r-project.org 和https://www.rstudio.com)。
2.數(shù)據(jù)導(dǎo)入:原始數(shù)據(jù)在EpiData軟件下輸出為文本文件sy.txt,用R軟件的read.csv2()函數(shù)導(dǎo)入,在R中建立數(shù)據(jù)表對(duì)象sy,sy中16個(gè)多選題的變量名為C01~C16,語(yǔ)句為(#號(hào)后為注釋內(nèi)容,下同):
sy<-read.csv2("sy.txt",header = TRUE,sep = ";")
#此處sy.txt文件在R的當(dāng)前工作路徑。
3.多選題判分:根據(jù)正確答案構(gòu)建向量XC,對(duì)每題判分,“完全正確”賦2分,“錯(cuò)誤”賦0分;在sy中建立后綴為-s的16個(gè)新變量即C01s、C02s、C03s、……、C16s,存放各題的賦分值。語(yǔ)句為:
XC<-c("123","14","123","123","34",
"1234","123","123","1234","1234","13",
"23","23","124","124","23")
#多選題判分標(biāo)準(zhǔn)答案。
ic<-c(paste0("0",1:9),10:16)
#建立序號(hào)向量01~16
t1<-paste0("sy$C",ic,"s<-ifelse((sy$C",ic,"==",XC,"),2,0)")
eval(parse(text=t1))
#粘合的判分字符串t1轉(zhuǎn)化為表達(dá)式并求解。
4.各題所選項(xiàng)轉(zhuǎn)換為二分法編碼,生成后綴為v1~v5的新變量,即C01v1、C01v2、…、C01v5,C02v1、C02v2、…、C02v5,…、C16v5等計(jì)80個(gè)新變量,賦值0或1。語(yǔ)句為:
t2<-paste0("sy$C",ic,"<-as.character(sy$C",ic,")");#各題所選項(xiàng)數(shù)值轉(zhuǎn)換為字符型
eval(parse(text=t2))
for (i in 1:5) {
t3<-paste0("sy$C",ic,"v",i,"<-as.numeric(regexpr(",i,",sy$C",ic,")>0)")
eval(parse(text=t3))
}
5.假如某一多選題選項(xiàng)數(shù)目超過(guò)9個(gè),在錄入時(shí)可用單字母代替>9的選項(xiàng)編碼。例如,假設(shè)問(wèn)卷中某多選題的題號(hào)為C18,選項(xiàng)有12個(gè),1~9的選項(xiàng)以所選項(xiàng)數(shù)字直接錄入,>9的選項(xiàng)以單字母a、b、c錄入代替其原編號(hào)10、11、12,錄入后轉(zhuǎn)換為二分法編碼,生成C18m1至C18mc共12個(gè)新變量,賦值0或1。不訪虛構(gòu)前5例的所選項(xiàng)編碼為“321c6ba”、“5428c”、“21a”、“123”、“256abc”,以便與命令語(yǔ)句及其后的注釋“#虛構(gòu)的所選項(xiàng)編碼”對(duì)應(yīng)。語(yǔ)句可用:
m<-c(1:9,"a","b","c")
sy$C18<-c ("321c6ba","5428c","21a",
"123","256abc")
#虛構(gòu)的所選項(xiàng)編碼
for (j in 1:length(m)) {
t5<-paste0("sy$C18m",m[j],"<-as.numeric(regexpr(?,m[j],?,sy$C18)>0)")
eval(parse(text=t5))
}
6.假如發(fā)現(xiàn)多選題的所選項(xiàng)編碼沒(méi)有按從小到大順序錄入,例如錄入編碼為“4231”,需要調(diào)整為“1234”方可在判分時(shí)不出錯(cuò),轉(zhuǎn)換時(shí)可建立新變量C01a~C16a便于對(duì)照。語(yǔ)句為:
for (b in 1:nrow(sy)) {
cl<-paste0("sy$C",ic,"a[",b,"]<-")
cr<-paste0("paste0(sort(strsplit(sy$C",ic,"[",b,"],")[[1]]),collapse=")")
t4<-paste0(cl,cr)
eval(parse(text=t4))
}
調(diào)查問(wèn)卷中設(shè)計(jì)多選題是為了最大限度采集研究所需要的信息,研究多選題編碼錄入與轉(zhuǎn)換是為了最大可能提高錄入的效率和準(zhǔn)確性,盡可能對(duì)數(shù)據(jù)進(jìn)行深入的分析和挖掘。采用excel、SPSS、SAS等軟件對(duì)調(diào)查問(wèn)卷中一組多個(gè)多選題進(jìn)行判分和編碼轉(zhuǎn)換仍比較繁瑣,且存在商業(yè)軟件的使用版權(quán)問(wèn)題。本文使用完全開(kāi)源免費(fèi)的R軟件,以健康素養(yǎng)監(jiān)測(cè)調(diào)查問(wèn)卷中多選題為例,提供了一組多選題的判分及選項(xiàng)按二分法進(jìn)行編碼轉(zhuǎn)換的運(yùn)行語(yǔ)句,原理與方法簡(jiǎn)單,具有操作上的可復(fù)制性和功能上的可擴(kuò)展性,在保留原始編碼法錄入優(yōu)點(diǎn)的基礎(chǔ)上,為研究者對(duì)多選題數(shù)據(jù)進(jìn)行深度挖掘提供了方便[5-7]。
R軟件處理數(shù)據(jù)的強(qiáng)大優(yōu)勢(shì)在于向量化操作。本文在根據(jù)多選題標(biāo)準(zhǔn)答案進(jìn)行判分和所選項(xiàng)原始編碼轉(zhuǎn)換為二分法編碼時(shí),使用ifelse()、regexpr()、strsplit()、sort()、paste0()等函數(shù)[8-9]與for循環(huán),根據(jù)所選項(xiàng)編碼中是否包含多選題的某選項(xiàng)編號(hào),返回給該選項(xiàng)的二分法變量值1或0。本文中R語(yǔ)句的巧妙在于,以向量化操作為基礎(chǔ),利用paste0()函數(shù)拼接出執(zhí)行語(yǔ)句的文本字符串,用parse() 函數(shù)將字符串轉(zhuǎn)化為一組表達(dá)式,最后用 eval() 函數(shù)對(duì)表達(dá)式求解,使語(yǔ)句顯得十分簡(jiǎn)潔,又能提高運(yùn)行速度[9]。多選題選項(xiàng)個(gè)數(shù)>9的情況,本文建議將>9的選項(xiàng)編碼以單字母(即a、b、c、……)代替其原編碼(即10、11、12、……)進(jìn)行錄入,在R軟件下仍可輕松進(jìn)行二分法編碼轉(zhuǎn)換。需要注意的是,若問(wèn)卷中設(shè)計(jì)的每個(gè)多選題選項(xiàng)數(shù)目不一致(如有的是8個(gè)選項(xiàng),有的是5個(gè)選項(xiàng),有的是3個(gè)選項(xiàng)),可按最多的選項(xiàng)數(shù)目定義循環(huán)次數(shù)變量,語(yǔ)句執(zhí)行后僅在數(shù)據(jù)框?qū)ο笾性黾右恍o(wú)意義的多余新變量,不影響數(shù)據(jù)的進(jìn)一步分析,或?qū)Χ嘤嘈伦兞窟M(jìn)行刪除處理(如刪除數(shù)據(jù)表sy中變量C06v7的語(yǔ)句可用“sy$ C06v7<-NULL”)。 期望本文能為居民健康素養(yǎng)監(jiān)測(cè)以及其他社會(huì)調(diào)查領(lǐng)域的研究者在數(shù)據(jù)整理時(shí)提供參考。
中國(guó)衛(wèi)生統(tǒng)計(jì)2018年4期