2017-11-02 1 views
3

新規R及びIは、データ<ように見えるベクトル有する - C(1、2、3、9、10、11、12、29、30、31、32、 33,34)。私は、連続する値のシーケンスの数を数えたいと思う。私。 1、2、3は合計カウント3の1カウント、9,10,11,12、29,30,31,32,33,34となります。カウント数

現在試しています

data<- c(1, 2, 3, 9, 10, 11, 12, 29, 30, 31, 32, 33, 34) 
event_detect<- function (data) { 
    for (i in 1:length(data)){ 
     if (data[(i+1)] == data[i]+1){ 
      data[(i)]<-NA 
     } 
    } 
} 

が、これは誤り「TRUE/FALSE必要な欠損値」を返します:NA(そして私は、NASを削除し、数えることができる)との最後を除いて連続した値のすべてを置き換えることになる。このループを使用。私はこれがループなしで達成できると思いますが、私は解決策を見つけるのに苦労しています。私は、我々が1でない差の数をカウントし、その1つを追加

+0

は、あなたが使用することができ、直接カウントするために '合計(RLE(差分(X))$の値== 1)'。 – lmo

答えて

1

あなたの助けをありがとうRLEが同じ値の実行のためにこれを行うことができます知っているので、1

増加値のためのRLEのようなもの数:

sum(diff(data) != 1) + 1 

これは、算術演算でRが論理値を数値に強制することを利用します。