【发布时间】:2021-04-09 01:23:12
【问题描述】:
我想从一个矩阵创建一个汇总表。在汇总表中,第一列包含 bin,随后的列根据特定条件和 bin 宽度填充频率。我已经设法使用遍历汇总表每一行的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
谢谢!
【问题讨论】:
标签: r matrix vectorization summarize