R语言如何将字符型变量转换为逻辑型:问卷非空转TRUE空值转FALSE
修正方案
plyr::revalue 本身没有内置else这类默认 fallback 的参数,所以你原来的写法无法生效。你可以用以下几种更简单的方案实现需求:
方案1:基础R实现(无需加载任何包)
直接通过逻辑判断完成转换,同时覆盖空字符串和NA值两种常见的未填写场景:
dataset$variable <- !is.na(dataset$variable) & dataset$variable != ""
如果需要把仅输入空格的无效回答也判定为未填写,可以加trimws()去掉首尾空格再判断:
dataset$variable <- !is.na(dataset$variable) & trimws(dataset$variable) != ""
方案2:dplyr 管道流实现
如果你习惯用tidyverse的管道写法,可以用if_else或者case_when实现:
library(dplyr) # 用if_else实现 dataset <- dataset %>% mutate(variable = if_else(!is.na(variable) & trimws(variable) != "", TRUE, FALSE)) # 用case_when实现(扩展性更强,后续要加其他判断规则更方便) dataset <- dataset %>% mutate(variable = case_when( is.na(variable) ~ FALSE, trimws(variable) == "" ~ FALSE, .default = TRUE ))
注意.default参数需要dplyr 1.1.0及以上版本支持,作用就是匹配所有不符合前面条件的情况,等价于你想要的else效果。
内容的提问来源于stack exchange,提问作者monete
相关产品推荐
相关产品推荐

