Rでは、シーケンス内の同一要素のランを数える最も効率的で簡単な方法は何でしょうか?シーケンスでランを数えるにはどうしたらいいですか?
は、例えば、非負整数のシーケンスにおいて連続するゼロの数をカウントする方法:
x <- c(1,0,0,0,1,0,0,0,0,0,2,0,0) # should give 3,5,2
Rでは、シーケンス内の同一要素のランを数える最も効率的で簡単な方法は何でしょうか?シーケンスでランを数えるにはどうしたらいいですか?
は、例えば、非負整数のシーケンスにおいて連続するゼロの数をカウントする方法:
x <- c(1,0,0,0,1,0,0,0,0,0,2,0,0) # should give 3,5,2
使用RLE():
y <- rle(c(1,0,0,0,1,0,0,0,0,0,2,0,0))
y$lengths[y$values==0]
そしてこのデータからヒストグラムをどのようにプロットしますか? 私は1から100までの数字と、異なる長さのスクエアを持っているとします。そして、私はヒストグラムを作成して、ある程度の長さのランが起こる頻度や数字が発生する頻度、またはその両方を示すことを望みます。 – skan
これは新しい質問の場ではありません。 –
これは、効率的に行うことができ値が変更される場所のインデックスを使用します。
x <- c(1,0,0,0,1,2,1,0,0,1,1)
値が変更される場所を確認します。
diffs <- x[-1L] != x[-length(x)]
インデックスを取得し、その後のインデックスの差分を取得する:
idx <- c(which(diffs), length(x))
diff(c(0, idx))
あなたがRで回答をしたいですか? もしそうなら、たぶんRタグを持っているのではなく、 "In R ..."で質問を開始するのが賢明でしょう。 – slim
注:これはNAsまたはNaNの実行では機能しません(常に非連続として扱われます)。醜いハックの回避策は、いくつかのセンチネル整数値にNAsとNaNを割り当てることです。 – smci