r - 如何处理R中逻辑类型列中的缺失值
问题描述
我有一个逻辑类型列 Self_Employed,值为 TRUE 和 FALSE,它缺少值,这意味着说“员工”不是自雇人士。我想在列中估算“缺失”类别
class(df$Self_Employed)
[1] "logical"
levels(df$Self_Employed)
NULL
sum(is.na(df$Self_Employed))
[1] 210
table(df$Self_Employed)
FALSE TRUE
1561 271
获取类为“逻辑”,级别为 NULL,缺失总和为 210,表格显示真假总数。
估算缺失首先我转换为因子,然后我估算缺失,但不填充,仅显示 NA 和仅显示 TRUE 和 FALSE 的级别
df$Self_Employed <- as.factor(df$Self_Employed)
levels(df$Self_Employed)[levels(df$Self_Employed)=="" ] <- "SE_Missing"
levels(df$Self_Employed)
[1] "FALSE" "TRUE"
仅显示 True 和 False 的级别和 is.na 显示相同 210
df$Self_Employed <- factor(df$Self_Employed,levels=c('FALSE','TRUE',''),labels=c('Yes','No','SE_Missing'))
如何填补缺失的因素
我需要将 True 转换为“是”,将 False 转换为“否”,将 NA 转换为“SE_Missing”
解决方案
我认为您不需要将专栏转换为因素。这是一个使用虚拟数据集的示例
library(dplyr)
df %>%
mutate(b = case_when(b ~ "Yes",
!b ~ "No",
TRUE ~ "SE_Missing"))
# a b
#1 1 Yes
#2 2 Yes
#3 3 No
#4 4 SE_Missing
#5 5 No
#6 6 SE_Missing
ifelse
或者使用也可以集成mutate
的嵌套
with(df, ifelse(is.na(b), "SE_Missing", ifelse(b, "Yes", "No")))
#[1] "Yes" "Yes" "No" "SE_Missing" "No" "SE_Missing"
数据
df <- data.frame(a = 1:6, b = c(TRUE, TRUE, FALSE, NA, FALSE, NA))
# a b
#1 1 TRUE
#2 2 TRUE
#3 3 FALSE
#4 4 NA
#5 5 FALSE
#6 6 NA
推荐阅读
- azure - Azure 应用程序设置设置字符集 UTF-8
- python - ValueError:检查输入时出错:预期的dense_1_input具有形状(2198,)但得到的数组具有形状(1,)
- arrays - 为什么我的对象属性在 if 语句中使用时未定义?
- python - 将 groupby() 的结果分配给数据框列
- angular - 如何从来自 api 的视频列表中以角度旋转特定视频的微调器
- anylogic - 用于代理详细信息的数据库模板
- python - python pandas - 转换自定义聚合
- ios - SwiftUI 中的惰性属性
- ruby-on-rails - 启用 ufw 时,RoR 上的 Recaptcha 不起作用
- java-8 - 如何在 Optional 中转换 lambda 参数