基于R中的二进制代码定义一个虚拟变量

Define a dummy variable based on binary code in R

以医院的以下患者数据为例。

YEAR <- sample(1980:1995,15, replace=T)
Pat_ID <- sample(1:100,15)
sex <- c(1,0,1,0,1,0,0,1,0,0,0,0,1,0,0)

df1 <- data.frame(Pat_ID,YEAR,sex)

我想引入一个虚拟变量 $PAIR_IDENTIFIER,每次出现新的 sex==1 时它都会取一个新值。问题是 sex 变量没有常量模式。

您有时会看到随后的 1 出现在 ith+2 位置,然后是 ith+3 位置等

所以$PAIR_IDENTIFIER <- c(1,1,2,2,3,3,3,4,4,4,4,4 .....)

您只需使用 cumsum

df1$PAIR_IDENTIFIER <- cumsum(df1$sex)
df1
#   Pat_ID YEAR sex PAIR_IDENTIFIER
#1      54 1991   1               1
#2     100 1992   0               1
#3       6 1995   1               2
#4      99 1994   0               2
#5      42 1988   1               3
#6      65 1990   0               3
#7      53 1994   0               3
#8      96 1987   1               4