1
我试图通过在大型数据集中循环变量来构建3D矩阵(请参阅下面的数据'头部')。具体来说,我需要创建一个矩阵,其行数与'LastFixes'的最大数量一样多,有多少列有主题(Sub = 36),有多少页面有条件(即8),我想要从FixStart开始直到FixEnd结束,从FixEnd结束到FixStart开始等等,等等,从一行开始分配1。因此,例如,对于第一行数据,我需要在矩阵的前165行中有1,然后从行#166中的0到330.我的R代码有效,但奇怪的是,我得到的数字不是0, 1矩阵!在下面你可以看到'头部'以及R代码。如果有人能帮我解决这个问题,我将不胜感激。非常感谢用R创建3D矩阵?
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
}
}
}
非常感谢您的帮助!你的代码是完成同样任务的好方法! – user2403900