首页 > 解决方案 > 如何对数据帧上的每个第 n 列的第 n 行元素进行多个统计

问题描述

我需要每行中的每 7 个元素作为第一列总和;对于第二列总和,对于第三列 min,对于第四列 max,并获得从数据框的第 3 列到第 48 列的过程,这里命名为 dataset,实际上有 50 列和 84 行。我希望得到一个包含 12 行和 48 列的数据框,其中每个行元素是 84 行中每行中每 7 个元素的统计信息(按列重复顺序:总和、总和、最小最大值)。我认为问题可能出在 i 行的 for 循环中,可能是?

k=data.frame(matrix(nrow = 12,ncol = 48));
  for (i in 1:12) {
     for (j in 1:12) {
         k[i,4*j-3]=apply(dataset[ i:7,4*j-1], 2,sum)
         k[i,4*j-2]=apply(dataset[ i:(i+7),4*j], 2,sum)
         k[i,4*j-1]=apply(dataset[ i:(i+7),4*j+1], 2,min)
         k[i,4*j]=apply(dataset[ i:(i+7),4*j+2], 2,max)
      }
  };

标签: rstatisticsapply

解决方案


像这样的东西?

stats <- NULL
for (i in 1:ncol(data)) {
    if (any(seq(1, ncol(data), by = 7) == i))) {
        stats[i] <- sum(data[,i])
    } else {
        if (any(seq(2, ncol(data), by = 7) == i))) {
            stats[i] <- sum(data[,i])
        } else {
            if (any(seq(3, ncol(data), by = 7) == i))) {
                stats[i] <- min(data[,i])
            } else {
            stats[i] <- max(data[,i])
            }
        }

    }
}

推荐阅读