例如 F7 您患有以下哪些慢性病:1、高血压 2、糖尿病 3、高血脂 4、COPD
答卷实际勾选为 1,2,4
采用哑变量录入设置为 F7-1 = 1
F7-2 = 1
F7-3 = 0
F7-4 = 1
采用实际选项录入设置为 F7 = 1,2,4
这种录入方式需要在后期数据清理时进行拆分,拆分为哑变量形式,以下是如何拆分多选题的代码,可以比较拆分后的哑变量与原来变量的结果
- /***********************************************
- 拆分多选题为哑变量形式
- 多选题在设置录入文件时一般按照哑变量设置,即多选题每个选项都设置为0/1,录入的时候需要
- 在每个选项录入0或1,当多项选择题目数量较多或选项数量较多时,采用上述方法录入工作量较大,此时
- 可以将多选题设置为字符类型,直接录入问卷实际的所有选项。
- 例如
- F7 您患有以下哪些慢性病:1、高血压 2、糖尿病 3、高血脂 4、COPD
- 答卷实际勾选为 1,2,4
-
- 采用哑变量录入设置为 F7-1 = 1
- F7-2 = 1
- F7-3 = 0
- F7-4 = 1
-
- 采用实际选项录入设置为 F7 = 1,2,4
- 这种录入方式需要在后期数据清理时进行拆分,拆分为哑变量形式,以下是如何拆分多选题的代码
- 可以比较拆分后的哑变量与原来变量的结果
- Date: 2018-08-06
- Author: YPP JY
- ***********************************************/
- use sample.dta,clear
- local j n v
- foreach v of varlist F7 F25 F101 F112 F113 F115 F118 F120 F121 F326 { // 用 of varlist
- local temp=0 // 用于计算依据不同选项生成的变量数量
- local oplist 1 2 3 4 5 6 7 8 9 10 88 99 // 初始化oplist
-
- split `v',p(,) gen("new_`v'_")
- local nv=`r(nvars)'
- di as error "the number of splitted variable in `v':" `nv' // 逗号分隔生成的变量数量
- if "`v'"=="F25" { // ==左右两边双引号,以下为不同题目的不同选项
- local oplist 1 2 3 4 5 6 7 8 9 88
- }
-
- if "`v'"=="F101" {
- local oplist 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 66 77 88 99
- }
-
- if "`v'"=="F112" | "`v'"=="F113" {
- local oplist 1 2 3 4 5 6 88 99
- }
-
- if "`v'"=="F115" | "`v'"==F121 {
- local oplist 1 2 3 4 5 6 7 8 9 88 99
- }
-
- if "`v'"=="F118" {
- local oplist 1 2 3 4 5 6 7 8 88
- }
-
- if "`v'"=="F120" {
- local oplist 1 2 3 4 5 6 7 8 9 10 11 88 99
- }
-
- if "`v'"=="F326" {
- local oplist 1 2 3 4 5 6 7 88
- }
- foreach j of local oplist {
- quietly generate int `v'_`j'=.
- local temp=`temp'+1
- forvalue n=1/`nv' {
- quietly replace `v'_`j'=1 if new_`v'_`n'=="`j'"
- }
- order `v'_*,after("`v'")
- }
- di as error "the number of generated variables in `v':"`temp'
- }
- drop new*
sample.dta
(1.33 MB)



雷达卡





京公网安备 11010802022788号







