R Studio中如何将精神疾病分类数据转换为0/1二进制编码
精神疾病分类字段二值化实现方案
核心转换规则先明确对齐需求:
原编码
0(无精神疾病)重编码为0;原编码1/2/3/4(心境障碍、行为障碍、其他类精神疾病、类障碍症状)统一重编码为1,代表存在患病迹象/确诊患病。
以下是不同常用数据处理工具的具体实现方式,你可以根据自己使用的工具选择:
Python(pandas处理场景,最常用)
假设你数据集中存储精神疾病分类的字段名为mental_class,转换代码如下:
import pandas as pd # 读取mentallIllness数据集,替换成你实际的文件读取路径即可 # 如果数据集已经加载到内存,跳过这步直接做转换 mentallIllness = pd.read_csv("你的数据集本地路径.csv") # 基础版转换:非0值统一转为1,0值保留为0,自动覆盖所有1-4的患病编码 mentallIllness["mental_binary"] = (mentallIllness["mental_class"] != 0).astype(int) # 严谨版转换(适配有缺失值的场景):仅明确1-4的编码转1,0转0,缺失值保留为空 mentallIllness["mental_binary"] = mentallIllness["mental_class"].apply( lambda x: 1 if x in [1,2,3,4] else 0 if x == 0 else pd.NA ) # 如果不需要保留原分类字段,把上面代码里的"mental_binary"换成原字段名"mental_class"即可覆盖原字段
转换完成后可以运行mentallIllness["mental_binary"].value_counts()做快速校验,确认输出只有0和1两个取值,且0的计数和原字段中0的记录数完全一致即可。
R语言处理场景
# 读取数据集,已加载可跳过 mentallIllness <- read.csv("你的数据集本地路径.csv") # 基础版转换 mentallIllness$mental_binary <- ifelse(mentallIllness$mental_class == 0, 0, 1) # 严谨版(适配缺失值) mentallIllness$mental_binary <- ifelse( mentallIllness$mental_class %in% c(1,2,3,4), 1, ifelse(mentallIllness$mental_class == 0, 0, NA) )
SPSS可视化操作场景
- 打开
mentallIllness数据集后,点击顶部菜单栏:转换 → 重新编码为不同变量(需要覆盖原字段就选「重新编码为相同变量」) - 将存储精神疾病分类的原字段选入右侧待转换变量框
- 给输出的二值结果列命名(比如
mental_binary),点击「更改」保存命名 - 点击「旧值和新值」按钮配置映射规则:
- 旧值选择「值」,输入
0,对应新值输入0,点击「添加」 - 旧值选择「范围」,输入最小值
1、最大值4,对应新值输入1,点击「添加」 - (可选)如果需要保留缺失值,旧值选「系统缺失」/「用户缺失」,对应新值选「系统缺失」,点击「添加」
- 旧值选择「值」,输入
- 依次点击「继续」「确定」即可完成转换。
内容的提问来源于stack exchange,提问作者lorrsto
相关产品推荐
相关产品推荐

