1

次元 130、395 の read.csv() を使用して作成されたデータ構造があります。行ごとにデータを反復処理し、各行の合計のリストのリストを含むベクトルを 5 刻みで返そうとしています (データ[、13:395])。私は次のコードを書きましたが、列ごとに 5 間隔の合計を持つベクトルを返し、これも無限ループです。言い換えれば、このコードを有限にして行ごとに機能させる方法を理解しようとしています。

data <- read.csv(file = "Table.csv")
indexes <- c(13:395)
counter <- 0
a <- c()
list <- c()

for(line in data){
    for(index in indexes){
        while(counter<5){
            a <- c(a, line[index])
            counter = counter + 1
            }
        list <- c(list, sum(a, na.rm = TRUE))
        counter = 0
        a = c()
        }
    }

ご協力いただきありがとうございます

4

2 に答える 2

1

これはどう?

library(zoo)
d <- as.data.frame(matrix(1:100,nrow = 4))
> t(apply(d,1,function(x) { rollapply(x,width = 5,FUN = "mean",align = "left") }))
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20]
[1,]    9   13   17   21   25   29   33   37   41    45    49    53    57    61    65    69    73    77    81    85
[2,]   10   14   18   22   26   30   34   38   42    46    50    54    58    62    66    70    74    78    82    86
[3,]   11   15   19   23   27   31   35   39   43    47    51    55    59    63    67    71    75    79    83    87
[4,]   12   16   20   24   28   32   36   40   44    48    52    56    60    64    68    72    76    80    84    88
     [,21]
[1,]    89
[2,]    90
[3,]    91
[4,]    92

目的のために、列のみを渡します13:365(つまりd[,13:365]、 だけではなく のようなものd)。

mean間違って代わりに使用sumしたことがわかりましたが、その変更は簡単です。

于 2012-06-22T16:24:42.443 に答える
0

おそらく次のような意味ですか?

lapply(1:nrow(data),function(i) rowSums(data[i:min(i+5,nrow(data)),13:395]))

組み込みのデータセットを使用した最初の結果は次のとおりです。

 head(lapply(1:nrow(mtcars),function(i) rowSums(mtcars[i:min(i+5,nrow(mtcars)),])))
[[1]]
        Mazda RX4     Mazda RX4 Wag        Datsun 710    Hornet 4 Drive 
          328.980           329.795           259.580           426.135 
Hornet Sportabout           Valiant 
          590.310           385.540 

[[2]]
    Mazda RX4 Wag        Datsun 710    Hornet 4 Drive Hornet Sportabout 
          329.795           259.580           426.135           590.310 
          Valiant        Duster 360 
          385.540           656.920 

[[3]]
       Datsun 710    Hornet 4 Drive Hornet Sportabout           Valiant 
          259.580           426.135           590.310           385.540 
       Duster 360         Merc 240D 
          656.920           270.980 

[[4]]
   Hornet 4 Drive Hornet Sportabout           Valiant        Duster 360 
          426.135           590.310           385.540           656.920 
        Merc 240D          Merc 230 
          270.980           299.570 

[[5]]
Hornet Sportabout           Valiant        Duster 360         Merc 240D 
           590.31            385.54            656.92            270.98 
         Merc 230          Merc 280 
           299.57            350.46 

[[6]]
   Valiant Duster 360  Merc 240D   Merc 230   Merc 280  Merc 280C 
    385.54     656.92     270.98     299.57     350.46     349.66
于 2012-06-22T17:38:44.383 に答える