大佬教程收集整理的这篇文章主要介绍了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,请注明来意。