2017-03-01 17 views
1

このオンラインにあまりにも似たようなものを見つけることができませんでしたが、これは私が苦労しているように思われる簡単なデータ操作の問題です。私は、次のような見える距離のベクトルを作成します。Rでは、n個の要素のすべてのグループのベクトルから最小値を取得します

distances = c(3, 5, 7, 9, 2.3, 5.2, 1.8, 2.3, 9, 0.75, 14, 11, 4.4, 12, 13) 

距離は、常に私の場合の長さ(距離)== 15で、5の倍数である長さのベクトルになり、私がしようとしています本得る:ここで

output = c(2.3, 0.75, 4.4) 

を、2.3最初の5つの要素の最小値であり、0.75は、要素6時10分の最小値であり、要素11:15の4.4分。これは、それが適用関数に役立つように感じますが、私はそれにあまり慣れていません。どんな助けにも感謝!ここで

答えて

4

いくつかの可能性れる:

1)/マトリックス適用カラムによるベクトル列をストリングdistancesから5行の行列を形成し、次いで、各列の最小値を取る:

apply(matrix(distances, 5), 2, min) 
## [1] 2.30 0.75 4.40 

2)zoo :: rollapply代わりに、動物園のパッケージにあるrollapplyを使用して、5つの要素ごとに最小値をとり、5つの要素を次の5つの要素に繰り返しスキップすることを指定します。

library(zoo) 

rollapply(distances, 5, by = 5, min) 
## [1] 2.30 0.75 4.40 

3)tapply/GL長さ(距離)/ 5 = 15/5 = 3つの群、長さ5の各々があるので:

tapply(distances, gl(3, 5), min) 
## 1 2 3 
## 2.30 0.75 4.40 

4)tapply/COLこれは(3)と同様です。しかし、glの代わりに、(1)からmatrixアイデアをborwwing col(matrix(...))を使用している:

tapply(distances, col(matrix(distances, 5)), min) 
## 1 2 3 
## 2.30 0.75 4.40 
関連する問題