对于给定的矩阵,我需要通过分组变量跟踪每列的分位数值。具体来说,我想按“队列结构”对输出进行分组。然后对于第 1 到第 5 列,我想计算每个分组变量的第 25、平均和第 75 个百分位数。这意味着我的输出矩阵将是 9 x 5。即每个队列结构 =1 3 行,队列结构 =2 3 行,队列结构 =3 3 行,每个对应于第 25 个平均值和第 75 个百分位数。
例子:
test.mat <- data.frame(matrix(nrow = 11, ncol =6))
colnames(test.mat)[[6]] = "Cohort Structure"
test.mat[,6]= c(1,1,1,1,1,1,2,2,3,3,3)
test.mat[1:11,4:5] <- rnorm(11*2,0,1)
test.mat[11, 5] <- NA
test.mat[1:3,1:3] <- rnorm(9,0,1)
X1 X2 X3 X4 X5 Cohort Structure
1 0.09529937 1.0140776 -0.45203406 -0.6585827 0.57117571 1
2 0.94442513 0.5777710 0.08588911 -0.3674672 0.01383938 1
3 1.47881362 0.4370171 -0.37843416 -1.2634002 0.58010696 1
4 NA NA NA 0.2844687 0.83113773 1
5 NA NA NA 0.8661393 0.35947394 1
6 NA NA NA -1.3685556 -0.71297431 1
7 NA NA NA -1.0117586 0.27020197 2
8 NA NA NA -0.7746377 0.97250990 2
9 NA NA NA -1.4406549 0.05538031 3
10 NA NA NA -0.2303378 -0.61625365 3
11 NA NA NA -0.1837904 NA 3
所需输出(输出矩阵):
对于 1:3 列和 3:9 行,输出矩阵将为 NA。第 1 列,第 1:3 行将报告队列结构 =1 的第 25、平均、第 75 个百分位值。将对第 2 列和第 3 列重复此过程。
在第 4 列和第 5 列重复计算每个队列结构的第 25、平均和第 75 分位数的过程。计算不包括 NA 的值。
quantile(test.mat[1:3,1], c(0.25,0.5,0.75))
quantile(test.mat[1:3,2], c(0.25,0.5,0.75))
quantile(test.mat[1:3,3], c(0.25,0.5,0.75))
将是输出矩阵 [1:3,1:3] 的所需输出
quantile(test.mat[1:6,4], c(0.25,0.5,0.75))
将为输出矩阵 [1:3,4] 提供所需的输出
对于我的实际数据集,我需要将过程应用于具有 100 列的矩阵