R 为行组创建具有聚合值的矩阵

R 为行组创建具有聚合值的矩阵,r,matrix,aggregate,R,Matrix,Aggregate,我有一个大矩阵,包含从微观细胞图像中提取的各种特征。不同的特征分布在列中,单个单元格分布在该矩阵的行中。然而,测量结果来自时间推移显微镜,因此每个细胞在该基质中有90行(时间点)。这个矩阵的维数是[cell_amount*90;feature_amount] 我的目标是: 计算每个单元格的后续时间点之差(时间序列的“导数”),然后 创建一个新矩阵,该矩阵包含每个单元格的这些差异的集合(以便新矩阵具有维度[cell_amount;feature_amount]) 我在R中设置了一些代码来测试我

我有一个大矩阵,包含从微观细胞图像中提取的各种特征。不同的特征分布在列中,单个单元格分布在该矩阵的行中。然而,测量结果来自时间推移显微镜,因此每个细胞在该基质中有90行(时间点)。这个矩阵的维数是[cell_amount*90;feature_amount]

我的目标是:

  • 计算每个单元格的后续时间点之差(时间序列的“导数”),然后
  • 创建一个新矩阵,该矩阵包含每个单元格的这些差异的集合(以便新矩阵具有维度[cell_amount;feature_amount])
我在R中设置了一些代码来测试我的问题,其中我有4个单元格,4个特性(列),每个单元格有3个时间点值。第一个单元格位于第1-3行,第二个单元格位于第4-6行,依此类推。由此,我计算出各值之间的差值:

A <- matrix(sample(1:100, 4*12), ncol = 4)
B <- abs( A - dplyr::lag(A) )
B[seq(1,nrow(B), 3),] <- NA
结果矩阵包含每个单元格的这些值的聚合,在本例中为方差,应如下所示:

       [,1]   [,2]  [,3]  [,4]
[1,]    1250  112.5 648   40.5
[2,]    4.5   4.5   968   2
[3,]    312.5 420.5 2048  8
[4,]    924.5 50    1568  84.5

如何计算R中的新矩阵?非常感谢您的帮助。

因为您使用的是没有种子的随机样本,我无法重新创建您的
矩阵。然而,这里是对
B
矩阵的重新创建

B <- matrix(scan(text="
NA   NA   NA   NA
82   29   54   22
32   44   18   31
NA   NA   NA   NA
22   61   10   33
19   64   54   35
NA   NA   NA   NA
59   18    6   10
34   47   70    6
NA   NA   NA   NA
60   23   68   22
17   13   12    9"), ncol=4, byrow=T)
您还可以创建适当的分组变量并使用
aggregate()


row\u示例那么这个输入的期望输出是什么?请给出具体值,以便测试可能的解决方案?谢谢您的输入。我重新计算了这个问题,并给出了一个预期的输出矩阵。这些值正好用于测试目的。
B <- matrix(scan(text="
NA   NA   NA   NA
82   29   54   22
32   44   18   31
NA   NA   NA   NA
22   61   10   33
19   64   54   35
NA   NA   NA   NA
59   18    6   10
34   47   70    6
NA   NA   NA   NA
60   23   68   22
17   13   12    9"), ncol=4, byrow=T)
apply(array(B, dim=c(3,4,4)),2:3, var, na.rm=T)
#        [,1]  [,2] [,3] [,4]
# [1,] 1250.0 112.5  648 40.5
# [2,]    4.5   4.5  968  2.0
# [3,]  312.5 420.5 2048  8.0
# [4,]  924.5  50.0 1568 84.5
row_sample <- rep(1:3, each=nrow(B)/3)
aggregate(B, list(row_sample), var, na.rm=T)
#   Group.1        V1       V2        V3        V4
# 1       1 1250.0000 112.5000  648.0000  40.50000
# 2       2  496.3333 662.3333  709.3333 193.00000
# 3       3  469.0000 305.3333 1084.0000  72.33333