数据帧中每个第n个数字列在第n个行元素上如何进行多个统计

时间:2019-05-04 02:19:59

标签: r statistics apply

我需要连续每7个元素作为第一列的总和;对于第二列的总和,对于第三列的最小值,对于第四列的最大值,并且从数据帧的第3列到第48列(此处称为数据集)收获了该过程,实际上它具有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)
      }
  };

1 个答案:

答案 0 :(得分:0)

像这样吗?

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])
            }
        }

    }
}