1
セグメントと値を持つdata.frame()
があります。 値が十分に近い場合、セグメントをマージしたいです。マージ後続セグメントの値
再現性の例 -
set.seed(4)
df <- data.frame(start = seq(from = 1, to = 91, by = 10),
end = seq(from = 10, to = 100, by = 10),
value = rnorm(10))
print(df)
start end value
1 1 10 0.2167549
2 11 20 -0.5424926
3 21 30 0.8911446
4 31 40 0.5959806
5 41 50 1.6356180
6 51 60 0.6892754
7 61 70 -1.2812466
8 71 80 -0.2131445
9 81 90 1.8965399
10 91 100 1.7768632
以降のセグメント間の違いは
for(i in 1:9) print(abs(df$value[i] - df$value[i+1]))
[1] 0.7592474
[1] 1.433637
[1] 0.2951641
[1] 1.039637
[1] 0.9463426
[1] 1.970522
[1] 1.068102
[1] 2.109684
[1] 0.1196767
レットである私はdiffが1よりも小さく、値は、平均であるべきセグメントをマージしたいと言いますセグメント値。一方が他方の後、私は1つにの3をマージしたい3つのセグメントがある場合 結果はthis-
start end value
1 1 20 -0.1628689
2 21 40 0.7435626
3 41 60 1.1624467
4 61 70 -1.2812466
5 71 80 -0.2131445
6 81 10 1.8367015
のようになります。
これを行う簡単な方法はありますか?
@ T.G。私はあなたがマージされたセグメントの最大数を定義できるように応答を編集します。 – timat
ありがとう! Rには何らかの組み込みがあると思っていましたが、それは素晴らしい解決策です。 –
@ T.G。私はそのための特定の機能があるとは思わないが、パフォーマンスを改善する必要がある場合は、 'data.table'または' dplyr'パッケージを使用してconsidereを実行することができます – timat