You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

抑郁相关字符串变量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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 22:31:14