程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了R 中的调查数据:未选择响应的频率大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决R 中的调查数据:未选择响应的频率?

开发过程中遇到R 中的调查数据:未选择响应的频率的问题如何解决?下面主要结合日常开发的经验,给出你关于R 中的调查数据:未选择响应的频率的解决方法建议,希望对你解决R 中的调查数据:未选择响应的频率有所启发或帮助;

我想知道在 R 中清理调查数据时是否有人有解决以下问题的方法。

假设一项调查有 Q1“你的性别是什么”:男,女,不想说。调查中没有人选择“宁愿不说”,以至于我跑频的时候只看到:

Q1 男:8,女:8。

有没有办法把“不想说”的代码写进Q1,这样当我运行频率时我看到:

Q1 Male : 8,Female: 8,Prefer not to say: 0.

这是一些示例数据代码:

 dat_in<-read_table2("ID    gender
1   1
2   1
3   1
4   1
5   1
6   2
7   2
8   2
9   2
10  2
11  2
12  2
13  1
14  2
15  1
16  2
")
    
data_cat <- dat_in %>% mutate_if(is.numeric,as.character) %>% mutate(across(matches("gender"),~fct_recode(.,"Female" = "1","Male"="2")))

lapply(SELEct_if(data_cat,is.factor),function(X) {
           df = data.frame(table(X))
           return(df)
       })

解决方法

将其更改为 factor 并指定 levels,这样即使没有元素,也返回 0 的频率计数

table(factor(dat_in$gender,levels = c("Male","Female","Prefer not to say")))

-输出

              Male            Female Prefer not to say 
                8                 8                 0 

如果有很多变量,即字符/因子类,循环列,添加“不喜欢说”作为新的级别

i1 <- sapply(dat_in,function(X) is.character(X)|is.factor(X))
dat_in[i1] <- lapply(dat_in[i1],function(X) {
             if(is.factor(X)) {
               levels(X) <- c(levels(X),"Prefer not to say")
              } else {
                x <- factor(x,levels = c(unique(X),"Prefer not to say"))
            }
           x })

或者,如果我们使用 tidyverse,则可以使用 fct_expand 中的 forcats 来完成

library(dplyr)
library(forcats)
dat_in <- dat_in %>%
           mutate(across(where(~ is.factor(.)|is.character(.)),~ 
               fct_expand(.,"Prefer not to say")))

大佬总结

以上是大佬教程为你收集整理的R 中的调查数据:未选择响应的频率全部内容,希望文章能够帮你解决R 中的调查数据:未选择响应的频率所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。