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

R语言中针对纵向数据基于日期创建哑变量的实现方法

R中按两个日期字段的比较结果生成指定哑变量

操作前首先要确认consultation_date和registration_date两个字段已经被解析为R的标准Date类型,直接对字符串格式的日期做大小比较会按文本字符顺序判断,结果完全不可靠。你给出的示例数据是日/月/年的日期格式,先用下面的代码做类型转换:

# 适配示例中的dd/mm/yyyy日期格式,把字段转为Date类型
df$consultation_date <- as.Date(df$consultation_date, format = "%d/%m/%Y")
df$registration_date <- as.Date(df$registration_date, format = "%d/%m/%Y")

方法1:基础R实现(无需安装额外包)

R里逻辑值TRUE转整数会自动变为1,FALSE转整数变为0,刚好匹配你的赋值规则:就诊日期大于登记日期赋值1,其余(小于、等于)情况赋值0,直接用逻辑判断即可生成变量:

df$new_dummy <- as.integer(df$consultation_date > df$registration_date)

方法2:dplyr实现(适配tidyverse数据处理流程)

如果你平时用dplyr做数据清洗,可以用mutate()函数生成新变量:

# 未安装dplyr先运行 install.packages("dplyr")
library(dplyr)

df <- df %>%
  mutate(new_dummy = as.integer(consultation_date > registration_date))

特殊场景处理

如果需要把两个日期相等的情况单独赋值(比如设为缺失值),可以用ifelse()写分层判断逻辑:

df$new_dummy <- ifelse(
  df$consultation_date < df$registration_date, 0,
  ifelse(df$consultation_date > df$registration_date, 1, NA)
)

用你提供的示例数据运行上述代码,生成的new_dummy取值和示例表完全一致。

内容的提问来源于stack exchange,提问作者abrar_r

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:30:44