全部版块 我的主页
论坛 计量经济学与统计论坛 五区 数据交流中心 调查问卷专版
8693 8
2009-10-19
最近在头大公司那些恶心的复选印象题,十几个项,不许用哑变量解决,用epidata控制录入重复的话会很痛苦,特意写了个句子,发现epidata的chk里面好像有长度限制,太多的布尔代数运算就会因为行的问题出现很多奇怪的bug(有时没事,有时就出事)。

建议:直接控制最好不超出10个布尔代数同时运算,十几个项的复选题目到了后面的选项就不能直接控制,得通过中间的临时变量控制。

举个例子吧,某道题目是复选,18个选项。

那么到了第十二个项的时候,由于逻辑运算太长,那么epidata就会报错,解决的方法就是先建立两个临时变量,然后再用临时变量的逻辑运算进行录重控制。第12项的chk写法

after entry

  vartem1=(q10z12=q10z11) or (q10z12=q10z10) or (q10z12=q10z9) or (q10z12=q10z8) or (q10z12=q10z7) or (q10z12=q10z6) or (q10z12=q10z5) or (q10z12=q10z4) or (q10z12=q10z3)

vartem2=(q10z12=q10z2) or (q10z12=q10z1)

* 用两个临时逻辑变量缩短行长度,临时变量在before file里面定义好,反正定义一大串不用都无所谓,输出数据的时候不会输出临时变量的。

if q10z12<>99 then   * "99"为缺失值

  if (vartem1=1) or (vartem2=1) then

   help "录重" type=error
   q10z1=.
   q10z2=.
   q10z3=.
   q10z4=.
   q10z5=.
   q10z6=.
   q10z7=.
   q10z8=.
   q10z9=.
   q10z10=.
   q10z11=.
   q10z12=.
   q10z13=.
   q10z14=.
   q10z15=.
   q10z16=.
   q10z17=.
   q10z18=.
   goto q10z1
  endif
endif
end

运行过去即可,试试看

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2009-12-1 13:12:34
谢谢,请问楼主,楼主能帮忙介绍布尔运算吗?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-3-14 15:06:15
敢问楼主 :老是要求的录入顺序是反向的,我给弄反了 ,怎么能不再次录入而利用软件更改顺序呢 ?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-3-24 17:48:47
不错的一个经验
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-3-28 15:55:31
看看,吸收点长处!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-5-26 16:08:26
不错 学习了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群