学术资讯 » 学界研圈

  • 首 页
  • 期刊选题
  • 期刊点评
  • 期刊大全
  • 学人博客
  • 编辑征稿
  • 投稿选刊
  • 万维群组
  • 学术会议
  • 万维读书
  • SCI/E期刊
  • SSCI期刊
  • AHCI期刊
  • 问卷中的一道填空题能有多少种回答?|R数据整理

    阅读: 2022/12/9 16:47:24

    转自:丁点帮你

    小伙伴们,不知道你有没有通过问卷来收集数据的经历?这两天有个师妹找我,想我帮她解决一些整理问卷数据时遇到的问题。

    看了这批数据,我有几个心得想分享给大家。

    做好问卷设计,事半功倍

    多重线性回归,一般是指有多个自变量X,只有一个因变量Y。前面我们主要是以简单线性回归为例在介绍,两者的差距主要在于自变量X的数量,在只有一个X时,就称简单线性回归本次我们数据链接:

    问卷中有一个问题是“去年您的家庭平均每人的年收入是多少?”,这是一道填空题,单位是元。

    我看到的答案有如下几种类型:

    35000,这种属于我们希望得到的完美的答案,大部分人是照这种格式写的;

    但也有相当一部分人给出了3万5千、4万7千、3.5万、5.5万、3.5w、3w5、3-4万、6w-7w……这样的答案。

    看到这些,我首先想到的是问卷的设计需要改进,一个好的问卷题目一定是既能保证问题表述精准并易于理解,同时又能够收集到格式统一的答案。

    今天我们姑且不说问题表述得如何,只说这道题很明显无法收集到格式统一的答案,这给后期数据处理带来了很多麻烦。

    站在答题者的角度,上面列出的各种答案基本都是符合题目要求的,但这并不符合研究者的预期。研究者不希望看到任何汉字、字母,只想要一个以“元”为单位的数字。

    所以在设置答案的时候,很多研究者会设为选择题,比如下面这个问卷的问法:

    如果想要获得准确的收入数值,那就应该在问卷中有清晰的标注,如在问题后面写一个说明:请填写具体数字,注意以“元”为单位;

    或者把填空进行限定,如: 万 千 百 十 元;

    采用问卷星等电子问卷时,还可以设置自动的逻辑查验,比如这个空只能填写1000以上的数字等;

    此外,有时被调查者的文化程度、理解水平各不相同,为保证问卷质量,还可采用由调研员一对一调查并填写问卷的方法,此时需严格培训调研员。

    千奇百怪的答案怎么快速整理好

    多重线性回归,一般是指有多个自变量X,只有一个因变量Y。前面我们主要是以简单线性回归为例在介绍,两者的差距主要在于自变量X的数量,在只有一个X时,就称简单线性回归本次我们数据链接:

    然而,对于师妹这套问卷,通过修改问卷设计来补救已经来不及了,我们只能运用软件来整理数据了。

    首先,把汉字、英文字母都去掉,还记得我们讲过的gsub函数吗?这是一个很实用的替换函数。

    如下面的三行代码分别将字符末尾的“万”、“w”、“千”都替换为了“什么都没有”。$表示字符末尾的意思。

    注意,这里并不是替换为空格,而是什么都没有,相当于把末尾的“万”、“w”、“千”都删掉了。

    关于gsub函数的更多详细介绍,可复习这篇文章:如何将杂乱的数据整理好(二) | 处理混乱的格式

    data$income <-gsub('万$','',data$income )

    data$income <-gsub('w$','',data$income )

    data$income <-gsub('千$','',data$income )

    像3万5千、3w5这样的答案,我们不能简单地直接删掉其中的“万”和“w”,而是应该替换为小数点,如下:

    data$income <-gsub('万','.',data$income )

    data$income <-gsub('w','.',data$income )

    此时,3万5千、4万7千、3.5万、5.5万、3.5w、3w5、3-4万、6w-7w……

    就变成了3.5,4.7,3.5……3-4,6-7。

    接下来,我们处理3-4,6-7这种情况。其实在问卷调查时,应该尽量让被调查者回答具体的数值,如果实在不愿回答,那也应该问清楚,更接近3万,还是4万,还是3.5万?总之,要让被调查者自己确定一个数值。

    但是如果我们已经无法追踪到被调查者,只能拟定一个合理的估计规则,比如取平均数,3-4就用3.5来代替。

    但是,这样一个一个算又太麻烦了,下面一组代码可以帮我们解决这个问题。

    其中的str_split函数很关键,顾名思义,它是用来分割字符的。

    下面第二行代码的意思就是:以短横线‘-’为分割符号,将其前后的字符提取出来,形成两个单独的字符,然后将其中第一个字符赋值给data$incomelower。

    # 分割字符

    library(stringr)

    data$incomelower <- str_split(data$income,'-',n=2,simplify = TRUE)[,1]

    data$incomeupper <-str_split(data$income,'-',n=2,simplify = TRUE)[,2]

    # 将字符转变为数值

    data$incomelower <-as.numeric(data$incomelower)

    data$incomeupper <-as.numeric(data$incomeupper)

    # 计算均值,生成新变量shouru

    data<-transform(data,shouru=ifelse(is.na(incomeupper),incomelower,

    (incomelower+incomeupper)/2))

    举个简单的例子,感受一下str_split函数的功能。

    好了,现在各种各样的符号都解决掉了,然后把这些被删掉了“万”/“w”的数字都乘以10000。

    注意原来填写正确的数据不能乘以10000。我们通篇查看了数据,发现原来填写正确的数据都是大于1000的,且剩下的经过上面一系列处理的数据都小于50。

    也就是说,我们只需要对小于50的那部分数据乘以10000就可以了。

    a<-which(data$income<50)

    data[a,]<-transform(data[a,], income = income * 10000)

    转自:“量化研究方法”微信公众号

    如有侵权,请联系本站删除!


    浏览(279)
    点赞(0)
    收藏(0)
  • 上一篇:社会仿真与大数据挖掘融合的可能与可行

    下一篇:不研究社交媒体,还能进入计算社会科学领域吗?

  • 首页

  • 文章

  • 期刊

  • 帮助

  • 我的

版权所有 Copyright@2023    备案号:豫ICP备2021036211号