抑郁相关字符串变量dp1转二进制变量(含缺失值)求助
字符串变量转二进制变量并处理缺失值
针对你提到的dp1变量(取值为"yes"、"no"、"don't know"),以下是主流统计工具的实现方案,满足yes=1、no=0、"don't know"设为缺失值的需求:
R语言实现
基础R写法
# 生成新的二进制变量 df$dp1_binary <- ifelse(df$dp1 == "yes", 1, ifelse(df$dp1 == "no", 0, NA))
dplyr包写法(更清晰的多条件判断)
library(dplyr) df <- df %>% mutate(dp1_binary = case_when( dp1 == "yes" ~ 1, dp1 == "no" ~ 0, TRUE ~ NA_real_ # 其余情况(包括"don't know")设为缺失 ))
Python Pandas实现
map函数方法
import pandas as pd # 用字典映射取值,未匹配的自动设为NaN df['dp1_binary'] = df['dp1'].map({'yes': 1, 'no': 0}).astype('Int64') # 注:astype('Int64')支持整数类型的缺失值(避免默认float类型)
replace函数方法
import pandas as pd # 直接替换指定取值,"don't know"替换为缺失值 df['dp1_binary'] = df['dp1'].replace({'yes': 1, 'no': 0, "don't know": pd.NA})
Stata实现
* 先初始化新变量为缺失值 gen dp1_binary = . * 替换对应取值 replace dp1_binary = 1 if dp1 == "yes" replace dp1_binary = 0 if dp1 == "no" * "don't know"的情况保持初始的缺失值即可
额外注意事项
如果数据中存在字符串格式不一致的情况(比如大小写混用、首尾空格),建议先清理变量:
- R语言(需stringr包):
library(stringr) df$dp1 <- df$dp1 %>% str_trim() %>% tolower()
- Python Pandas:
df['dp1'] = df['dp1'].str.strip().str.lower()
内容的提问来源于stack exchange,提问作者Owen
相关产品推荐
相关产品推荐

