這引起了比預期更詳細的,但它的工作對你長格式的片段:
我從所提供的數據開始,而是使用的,而不是長期廣泛。
zz <- textConnection("id time q dv
1 1 1 1
1 2 0 1
1 3 1 1
1 4 0 0
1 5 0 NA
1 6 0 NA
2 1 1 1
2 2 1 1
2 3 0 0
2 4 0 NA
2 5 0 NA
2 6 0 NA
")
d <- read.table(zz, header = TRUE)
d$dv <- NULL
close(zz)
# start out with wide instead of long
dw <- reshape(d, direction='wide', timevar="time", sep="")
dw
## id q1 q2 q3 q4 q5 q6
## 1 1 1 0 1 0 0 0
## 7 2 1 1 0 0 0 0
使用產生每行寬/觀測的正確「 」 DV變量的函數。
censor <- function(periods) {
n <- length(periods)
cperiods <- periods*1:n # multiply to get positions
n.obs <- max(cperiods) # position of last q=1, and one q=0
periods[(n.obs+1):n] <- NA # NA's for periods outside observed range
n.cens <- n - n.obs - 1 # number censored
c(rep(1, n.obs-1), 0, rep(NA, n.cens+1)) # fill "dv" accordingly
}
應用所述函數,導致適當審查的寬數據集。
# apply censored(), create dv variable in wide format
dw.censored <- data.frame(t(apply(dw, 1, FUN = censor)))
dw.censored
## X1 X2 X3 X4 X5 X6 X7
## 1 1 1 1 0 NA NA NA
## 7 1 1 0 NA NA NA NA
現在回到長格式(具有審美格式化,排序等)
dl.censored <- reshape(dw.censored, varying = 1:7, timevar = "time",
sep = "", direction = "long")
dl.censored <- dl.censored[order(dl.censored$id, dl.censored$time),]
dl.censored$dv <- dl.censored$X
rownames(dl.censored) <- dl.censored$X <- NULL
dl.censored
## time id dv
## 1 1 1 1
## 2 2 1 1
## 3 3 1 1
## 4 4 1 0
## 5 5 1 NA
## 6 6 1 NA
## 7 7 1 NA
## 8 1 2 1
## 9 2 2 1
## 10 3 2 0
## 11 4 2 NA
## 12 5 2 NA
## 13 6 2 NA
## 14 7 2 NA
而沒有NA ' S:
dl.censored <- na.omit(dl.censored) # without NA's
dl.censored
## time id dv
## 1 1 1 1
## 2 2 1 1
## 3 3 1 1
## 4 4 1 0
## 8 1 2 1
## 9 2 2 1
## 10 3 2 0
假設'dv'是你在DTSA發生的事件,你確定是outlin編輯步驟是最實用的方法?原始(寬)數據的外觀如何? – mhermans 2012-07-11 23:48:15
雖然我不是專家,但是從我讀過的書中,我認爲他們是。每個問題也具有隨時間變化的屬性,這些屬性將在模型中用作預測因子,並且隨着它們不時地變化,需要很長的形式。 – roody 2012-07-12 02:04:42
長格式是你想要的生存模式,而不是你的錄音工作所必需的......然而,我注意到了它,但請參見下文。 – mhermans 2012-07-12 16:19:47