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

HCUP宽格式数据中手术时序对比变量创建技术求助

问题描述

在HCUP数据子集中,每个pr列对应的prday列记录了对应ICD编码手术的住院日。我已经基于pr列创建了var1、var2、measure1、measure2的存在标识变量,现在需要创建以下8个时序对比变量:

var1_before_measure_1:若var1对应的prday ≤ measure1对应的prday则为1,否则为0
var1_before_measure_2:若var1对应的prday ≤ measure2对应的prday则为1,否则为0
var1_after_measure_1:若var1对应的prday > measure1对应的prday则为1,否则为0
var1_after_measure_2:若var1对应的prday > measure2对应的prday则为1,否则为0
var2_before_measure_1:若var2对应的prday ≤ measure1对应的prday则为1,否则为0
var2_before_measure_2:若var2对应的prday ≤ measure2对应的prday则为1,否则为0
var2_after_measure_1:若var2对应的prday > measure1对应的prday则为1,否则为0
var2_after_measure_2:若var2对应的prday > measure2对应的prday则为1,否则为0

以下是我已完成的R代码,请求技术协助:

require(tidyverse) #> Loading required package: tidyverse 

df <- structure(list(pr1 = c("3531",   "0066", "3761", "3523", "3524", "3524", "3523", "3524", "3521",   "3613"), pr2 = c("3597", "3768", "3597", "8856", "8856", "311",   "3611", "3611", "3721", "3523"), pr3 = c("0066", "3723", "8872",   "3761", "3613", "9672", "3961", "3961", "3523", "3722"), pr4 = c("9960",   "3761", "4223", "3768", "3615", "3761", "3964", "3964", "3761",   "3531"), pr5 = c("3893", "3597", "", "8872", "3761", "3611",   "9920", "0017", "3961", "3761"), pr6 = c("3961", "3531", "",   "3961", "8872", "3615", "0017", "8872", "9604", "0066"), pr7 = c("3722",   "", "", "9960", "3961", "3749", "8964", "9672", "3404", "8856"                                                                                                                                                                                                                   ), pr8 = c("8853", "", "", "3893", "8872", "3532", "9671", "9904",   "8872", "3964"), pr9 = c("0041", "", "", "3723", "", "3957",   "3995", "9907", "9390", "3606"), pr10 = c("8856", "", "", "3891",   "", "387", "3893", "9905", "9904", "0040"), pr11 = c("9604",   "", "", "8872", "", "8872", "", "9915", "9962", "0045"), pr12 = c("",   "", "", "9604", "", "3961", "", "3324", "9671", "9671"), pr13 = c("",   "", "", "9671", "", "3961", "", "8964", "8872", "9604"), pr14 = c("",   "", "", "", "", "3322", "", "9604", "8872", "8872"), pr15 = c("",   "", "", "", "", "3404", "", "", "3897", ""), prday1 = c(1, 1,   2, 8, 0, 3, 0, 0, 12, 0), prday2 = c(1, 1, 2, 7, 0, 43, 0, 0,   0, 0), prday3 = c(0, 1, 2, 8, 0, 3, 0, 0, 0, 0), prday4 = c(6,   1, 2, 12, 0, 3, 0, 0, 0, 0), prday5 = c(0, 1, NA, 8, 0, 3, 0,   0, 0, 0), prday6 = c(1, 1, NA, 8, 0, 3, 0, 0, 14, 0), prday7 = c(0,   NA, NA, 12, 0, 3, 0, 0, 16, 0), prday8 = c(0, NA, NA, 0, 0, 3,   0, 0, 6, 0), prday9 = c(0, NA, NA, 7, NA, 3, 1, 0, 0, 0), prday10 = c(0,   NA, NA, 0, NA, 43, 1, 1, 2, 0), prday11 = c(7, NA, NA, 5, NA,   3, NA, 3, 15, 0), prday12 = c(NA, NA, NA, 12, NA, 3, NA, 10,   14, 1), prday13 = c(NA, NA, NA, 12, NA, 3, NA, 10, 1, 1), prday14 = c(NA,   NA, NA, NA, NA, 43, NA, 10, 6, 7), prday15 = c(NA, NA, NA, NA,   NA, 18, NA, NA, 9, NA)), row.names = c(NA, 10L), class = "data.frame") 

var_1_code<-c("3523", "3524") 
var_2_code<-c("3597") 
measure_1_code<-c("3761") 
measure_2_code<-c("3768")   

find_icd10=function(x) {if_any(starts_with("pr"),# apply ifelse() to columns start with `pr`
  ~ str_detect(.x, x),1,0)} #use str_detect() to find  values within all `pr` columns 

## `code` function aims at allowing multiple values to pass to find_icd10 ## e.g.  ## > mutate(df, icd3509=find_icd10 (code("^3501|^3502|^3509"))) 
code      = function(x) {paste(paste0(rep("^"), # this will add ^ to the begning of each element of the vector, so a value from the middle of a long cell won't be included by mistake                                       
 x), collapse = "|")} # this will allow evaluating multiple elements in a vector without errors from str_detect()   

df<-df %>% mutate(
var_1=find_icd10(code(var_1_code)),  
var_2=find_icd10(code(var_2_code)),  
measure_1=find_icd10(code(measure_1_code)),  
measure_2=find_icd10(code(measure_2_code)), 

# var1_before_measure_1  # var1_before_measure_2  # var1_after_measure_1  # var1_after_measure_2  # var2_before_measure_1  # var2_before_measure_2  # var2_after_measure_1  # var2_after_measure_2
)  
df $var_1 %>% table #> . #> TRUE  #>    7
df $var_2 %>% table #> . #> FALSE  TRUE  #>     2     3 
df $measure_1 %>% table #> . #> TRUE  #>    7 
df $measure_2 %>% table #> . #> FALSE  TRUE  #>     2     2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 21:57:01