場所名と個人IDを連結するテキストIDが割り当てられた個人のデータフレームがあります(以下のデータを参照)。最終的には、データセットを「長い」から「広い」に変換して(たとえば、「形状変更」を使用して)、各個人が1つの行のみで構成されるようにする必要があります。そのためには、reshapeが時変共変量などを識別するために使用できる「時間」変数を割り当てる必要があります。2回まで繰り返す個人に対してこれを行うための(おそらく悪い)コードがありますが、最大18回の繰り返し発生を識別できます。以下のコードは、ハッシュの前にある行を削除すると正常に機能しますが、最大2つの繰り返ししか識別しません。私がその行を残しておくと(これは、2回以上繰り返される個人にとって必要と思われる)、Rは窒息し、
Error in if (data$uid[i] == data$uid[i - 2]) { :
argument is of length zero
誰かがこれを手伝うことができますか?前もって感謝します!
place <- rep("ny",10)
pid <- c(1,1,2,2,2,3,4,4,5,5)
uid<- paste(place,pid,sep="")
time <- rep(0,10)
data <- cbind(uid,time)
data <- as.data.frame(data)
data$time <- as.numeric(data$time)
#bad code
data$time[1] <- 1 #need to set first so that loop doesn't go to a row that doesn't exist (i.e., row 0)
for (i in 2:NROW(data)){
data$time[i] <- 1 #set first occurrence to 1
if (data$uid[i] == data$uid[i-1]) {data$time[i] <- 2} #set second occurrence to 2, etc.
#if (data$uid[i] == data$uid[i-2]) {data$time[i] <- 3}
i <- i+1
}