後でさらに分析を実行するいくつか(2または3)の連続した値の抽出を必要とする分析を試みています。
私は2つのベクトルを持っています:aは連続したセルラー信号のマシンからの出力です。bは同じ出力ですが、1だけシフトしています。この表記は、ある信号と次の信号の間の変動性を理解するために使用されます。
a <- c(150, 130, 135, 180, 182, 190, 188, 195, 170, 140, 120, 130, 180, 181)
b <- c(130, 135, 180, 182, 190, 188, 195, 170, 140, 120, 130, 180, 181, 130)
私がやろうとしているのは、このデータセットの中で最も均質な(安定した)領域(つまり、1つの値が次のようなもの)を特定することです。
私が持っていたアイデアはa
、b
との間で減算を実行し、絶対値を考慮することでした。
c <- abs(a-b)
これは
c
[1] 20 5 45 2 8 2 7 25 30 20 10 50 1 51
さて、最も近い3つの連続するポイントが必要な場合、シーケンス2 8 2
が私が検討するシーケンスであることは明らかですが、特に数百のデータの配列からこれらの3つの値を自動的に抽出する方法がわかりません。ポイント。
初期データ:
a <- c(150, 130, 135, 180, 182, 190, 188, 195, 170, 140, 120, 130, 180, 181)
b <- c(130, 135, 180, 182, 190, 188, 195, 170, 140, 120, 130, 180, 181, 130)
2つのベクトル間の絶対差を見つけます。
res <- abs(a - b)
res
get neighborsの各要素について、絶対差の合計を計算します。
# with res[(x-1):(x+1)] we extract x and it's neighbors
resSimilarity <- sapply(seq_along(res), function(x) sum(res[(x-1):(x+1)]))
resPosition <- which.min(resSimilarity)
# [1] 5
元のベクトルから値を抽出するには、次を使用します。
a[(resPosition - 1):(resPosition + 1)]
# [1] 180 182 190
b[(resPosition - 1):(resPosition + 1)]
# [1] 182 190 188
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加