2016-05-09 51 views
1

從醫院中獲取以下患者數據示例。在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 .....)

回答

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 
+1

夢幻般的,所以簡單! – lukeg