問題タブ [run-length-encoding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
3171 参照

r - dplyr を使用する場合は、rle を使用して実行ごとにグループ化します

Rでは、変数の実行に基づいてデータをグループ化した後、データを要約したいと考えています(別名、データの各グループは、連続する値が同じxであるデータのサブセットに対応しています)。xたとえば、y各実行内の平均値を計算する次のデータ フレームを考えてみxます。

この例では、x変数には長さ 3、2、1、最後に 1 のランがあり、これら 4 つのランで値 1、2、1、および 2 を取ります。これらのグループの対応する平均はy、2、4.5、6、および 7 です。

を使用してベース R でグループ化された操作を実行し、データとしてtapply渡し、 を使用して から実行番号を計算し、目的の集計関数を渡すのは簡単です。dat$yrledat$x

このロジックを dplyr にかなり直接引き継ぐことができると考えましたが、これまでの試みはすべてエラーに終わりました。

完全を期すために、、 、rleを使用して実行 ID を自分で再実装してこれを回避することもできますが、グループ化コードが読みにくくなり、車輪の再発明が少し必要になります。cumsumheadtail

rleでベースのグループ化コードが失敗する原因は何ですか? また、実行 ID でグループ化するときdplyrに引き続き使用できるようにする解決策はありますか?rle

0 投票する
1 に答える
359 参照

r - 増加する連続する整数 R の平均数を rle でカウントする

データ フレームには 2 つの列があります。左側の列は id を表し、右側の列には増加する整数が含まれています。連続したものとそうでないものがあります。整数の繰り返しはありません。私の目的は、連続する整数の平均数を取得することですid 。たとえば:

ここに私のデータセットの断片があります

station summary id

上記のサンプルでは、 ​​id 1には次の数の連続する整数がありますmoment- 2, 2, 2, 1, 1, 1, 1 - したがって、平均は 1.428 になります。

id 2には、1、5、2、2 の連続する整数の数があるmomentため、平均は 2.5 になります。

実際のデータセットには、最大 200 行と 300 個の一意の ID があります。各 ID の平均が必要です。

何らかの方法で rle() 関数を使用する必要があることはわかっています。次のコードで最大数を見つけることができます。

どのように平均を取りますか?

0 投票する
2 に答える
1687 参照

java - String の大文字と小文字を数え、その文字に count を追加する

文字列の出力を印刷して、大文字と小文字の数を見つけようとしています。

たとえば、string = "AaaBBbCc" の場合、"A1a2B2b1C1c1" として出力する必要があります。

IE 大文字の「A」のカウント、次に小文字の「a」のカウント、文字の追加。

以下は、私が行ったところまでのコードスニペットです。誰でもそれがどうなるかを提案できますか。私はコードがマークに達していないことを知っています:(

}

0 投票する
4 に答える
2872 参照

string - インプレース ランレングス エンコーディング アルゴリズム

インタビューの質問に遭遇しました:

入力 String: が与えられた場合、aaaaabcddddeeそれを に変換しa5b1c1d4e2ます。

追加の制約の 1 つは、これをインプレースで行う必要があることです。これは、余分なスペース (配列) を使用しないことを意味します。

エンコードされた文字列が常に元の文字列に収まることが保証されています。つまり、元の文字列よりも多くのスペースを占有abcdeするようにエンコードされるため、string likeは発生しません。a1b1c1d1e1

インタビュアーが私にくれたヒントの 1 つは、文字列を 1 回トラバースして、節約されたスペースを見つけることでした。

それでも、追加の変数を使用しないと、入力文字列の一部の値が上書きされる可能性があるため、私は立ち往生しています。

何か提案をいただければ幸いです。

0 投票する
4 に答える
1083 参照

r - 連続する値のグループ名を作成する

簡単な作業のように見えますが、もっと簡単な方法がわかりません。以下にxベクトルがあり、連続する値のグループ名を作成する必要があります。私の試みはrle、より良いアイデアを使用していましたか?

0 投票する
1 に答える
29 参照

python - RLEリストの選択変数間の平均化、最後の要素に問題がある

そこで、ランレングス エンコーディングを使用して圧縮リストを作成しました。450現在、リスト内の特定の変数 (と など)内で平均を見つけようとしています180。コードは次のように動作するはずです

私はこれにかなり慣れていません。そうでなければ、圧縮中に平均化を行っていたでしょう。

私が立ち往生しているのは2つのことです。圧縮されていないときの結果のリストは元のリストと同じ長さではなく、コードが最後の要素を通過しない場合に最後の要素を追加する方法がわかりません。for ループ内で のようなものを使用してインデックス作成を使用できますelif i[0].index==len(lst)が、計算コストが高くなります (データセットがかなり大きいため)。私が作成したのは、for ループの外側にある最後の if ステートメントですが、結果のリストは元のものと同じ長さではありません。

後で問題を調査する人のために、圧縮と平均化を組み合わせたソリューションを追加しました。目的を明確にするために、GIS プログラムで道路セグメント間の角度を圧縮して、より小さなデータ セットを作成しています。450 は Null 値として扱うことができます。

0 投票する
3 に答える
226 参照

r - inverse を使用せずに rle オブジェクトの全長を取得できますか?

長さ 10 の Rle があるとします。

を使用せずにこのオブジェクトの長さを取得するにはどうすればよいinverse.rleですか?

染色体を表すいくつかのまばらなRlesがあり、それらは数億の長さになる可能性があるため、逆を使用したくありません。


akruns の回答が私のデータでは機能しません: