-1

データ フレームがあり、すべての列の 60 レコードごとに平均を取り、新しいデータ フレームを返したいと考えています。

たとえば、行 1 から行 60 まで、次に行 61 から行 120 まで、次に 121 から 180 まで、すべての列の平均を取りたいと考えています。同様に、データ フレーム全体を調べます。次に、これらすべての手段を新しいデータ フレームとして 1 つのテーブルにまとめます。

誰でも私を助けることができますか?本当にありがとう!

4

2 に答える 2

2

lapplyと複雑なことをしていましたが、 fromを使用するとはるかに簡単にcolMeansなることに気付く前に。完全を期すために、幅 5 列、長さ 120 行のダミー データで 2 つのアプローチがどのように同一の結果をもたらすかを示します。rollapplypackage:zoo

    data <- data.frame(matrix(runif(600),nrow=120))
    nrows <- 60
    t(sapply( rev(1:floor(nrow(data)/nrows)) , function(x){ colMeans(data[c(rev(seq.int( nrow(data)/x))[1:60]),]) } ))
                X1        X2        X3        X4        X5
#   [1,] 0.4706680 0.4780024 0.4749281 0.4910620 0.4815172
#   [2,] 0.5236926 0.4385900 0.4979433 0.4787086 0.5616210

またはもっと簡単にrollapply()

    require(zoo)
    rollapply(data, 60, FUN = mean , by = 60 )
                X1        X2        X3        X4        X5
#   [1,] 0.4706680 0.4780024 0.4749281 0.4910620 0.4815172
#   [2,] 0.5236926 0.4385900 0.4979433 0.4787086 0.5616210
于 2013-04-10T18:46:57.480 に答える
0

明らかにあなたのデータではテストされていませんが、help(aggregate) の最初の例でテストされました

dflen <- nrow(dfrm)
aggregate(dfrm, list(rep(1:(dflen/60 +1), each=60, length=dflen) ), mean)
于 2013-04-10T18:47:21.197 に答える