我正在尝试通过在大型数据集中循环变量来构建 3D 矩阵(请参阅下面数据的“头部”)。具体来说,我需要创建一个矩阵,其行数与“LastFixes”的最大数一样多,列数与主题数一样多(Sub = 36),页面数与条件数一样多(即 8),我想要从 FixStart 开始到 FixEnd 结束连续分配 1,从 FixEnd 结束到 FixStart 开始连续分配 0,依此类推。因此,例如,对于数据的第一行,我需要在矩阵的前 165 行中有 1,然后从第 166 行到第 330 行有 0。我的 R 代码有效,但奇怪的是,我得到的数字不是 0 和矩阵中的 1s!您可以在下面看到“头部”以及 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
}
}
}