Я хочу создать сводную таблицу из матрицы. В сводной таблице первый столбец имеет интервалы, а последующие столбцы заполняются частотами на основе определенных условий и ширины интервалов. Мне удалось сделать это с помощью цикла for
, который проходит по каждой строке сводной таблицы. Однако мне было интересно, есть ли способ сделать это без цикла for
или функции apply
, потому что матрица имеет большое количество строк.
Например, «модель» имеет матрицу, которую я хочу суммировать в таблице «выход».
n <- 1000
set.seed(12)
model <- matrix(0,nrow = n, ncol = 3)
model[,1] <- rbinom(n,1,0.6)
model[,2] <- runif(n,0,120)
model[,3] <- runif(n,70,110)
# Creating summary table of model
output <- matrix(0,13,3)
output[,1] <- seq(from = 0, to = 120, by=10)
for (i in 1:length(output[,1])){
output[i,2] <- sum(model[,2]>=10*(i-1) & model[,2]<10*i & model[,1]==1 & model[,3]<=100)
output[i,3] <- sum(model[,2]>=10*(i-1) & model[,2]<10*i & model[,1]==0 & model[,3]<=100)
}
head(output)
Результат будет:
> head(output)
[,1] [,2] [,3]
[1,] 0 33 22
[2,] 10 41 26
[3,] 20 28 23
[4,] 30 41 30
[5,] 40 41 25
[6,] 50 43 23
Благодарю вас!