大規模なデータセットで変数をループして 3D マトリックスを構築しようとしています (以下のデータの「頭」を参照してください)。具体的には、「LastFixes」の最大数と同じ数の行、件名と同じ数の列 (Sub = 36)、条件と同じ数のページ (つまり 8) を持つマトリックスを作成する必要があります。 FixStart の開始から FixEnd の終了まで連続して 1 を割り当て、FixEnd の終了から FixStart の開始まで 0 を割り当てます。たとえば、データの最初の行については、行列の最初の 165 行に 1 が必要で、次に行番号 166 から 330 まで 0 が必要です。マトリックスに1!以下に、「ヘッド」と R コードを示します。誰かがこの問題を解決するのを手伝ってくれたら幸いです。
enter code here
head (data)
Sub Item Condition FixStart FixEnd
1 1 4 7 1 165
2 1 4 7 331 600
3 1 4 7 623 1180
4 1 4 7 1202 1487
5 1 4 7 1511 1561
6 1 4 7 1696 2466
lastFix <- max(data$FixEnd)
datamatrix<-array(0,dim=c(lastFix,36,8))
for (i in 1:length(data$Sub)){
n <- data[i,1]
if (data[i,3] == "1"){
for (j in data[i,4]:data[i,5]){
datamatrix[j,n,1] <- datamatrix[j,n,1]+1
}
}else
if (data[i,3] == "2"){
for (j in data[i,4]:data[i,5]){
datamatrix[j,n,2] <- datamatrix[j,n,2]+1
}
}else
if (data[i,3] == "3"){
for (j in data[i,4]:data[i,5]){
datamatrix[j,n,3] <- datamatrix[j,n,3]+1
}
}else
if (data[i,3] == "4"){
for (j in data[i,4]:data[i,5]){
datamatrix[j,n,4] <- datamatrix[j,n,4]+1
}
}else
if (data[i,3] == "5"){
for (j in data[i,4]:data[i,5]){
datamatrix[j,n,5] <- datamatrix[j,n,5]+1
}
}else
if (data[i,3] == "6"){
for (j in data[i,4]:data[i,5]){
datamatrix[j,n,6] <- datamatrix[j,n,6]+1
}
}else
if (data[i,3] == "7"){
for (j in data[i,4]:data[i,5]){
datamatrix[j,n,7] <- datamatrix[j,n,7]+1
}
}else
if (data[i,3] == "8"){
for(j in data[i,4]:data[i,5]){
datamatrix[j,n,8] <- datamatrix[j,n,8]+1
}
}
}