問題タブ [plyr]
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.
r - ddply の使用時に順序付けられた因子を保持する
私ddply
はたくさん使います。時折順序因子を使用します。ddply
順序付けされた要素を含むデータ フレームを呼び出すと、再結合されたデータ フレーム内の順序付けが破棄されます。
そのレコード レベルの順序付け用に次のラッパーをddply
作成し、最初に順序付けされたすべての列に再適用します。
この機能は十分に確認していないため、処理できない場合があります。これを処理するためのより良い/より完全な方法はありますか? for
ループはもう少し考えたら外せるかな。
特に、ddply
元の順序付けられた要素がまだ存在するかどうかを確認するために呼び出しの後に行うチェックは本当に見苦しいようですが、ddply
存在する列が変更され、順序付けられた要素が削除される可能性がある場合を関数が処理できるようにしたいと考えています。 .
考え?
r - キャストを1つのレベルと比較して形を変える
あるレベルの変数の値を他のすべてのレベルの変数と比較したいデータがあることがよくあります。これを行うためのコードを書くたびに、もっと簡単にできたらいいのにと思います。問題の例を次に示します。
任意のカットのダイヤモンドの平均コストを、ベストカットのダイヤモンドの平均コストと比較したいとします。物事を公平にするために、私は明確さごとに別々にこれを行いたいと思います。
十分なデータがあることを確認しましょう。
アイデアにゼロはありません。平均を計算しましょう。
私が望む最終結果は次のとおりです。
しかし、これをきちんと行う方法がわかりません。この質問の残りのほとんどは、計算の中間ステップである除算に関するものです。
ここで、すべてのカットと理想の相対価格を計算したいと思います。計算の途中で表示されると予想されるデータフレームは次のとおりです。1レベルのカットのみを抽出します。
これは機能しますが、上記のステートメントを書くのは面倒です。それでも、理想的な名前をもう一度言及して、計算を終了する必要があります。
こんな感じがしたい
計算ですべてのリキャストレベルの名前を知る必要があるため、これは平均計算にはまったく適していません。
リキャストしたいのですが、抽出されたレベルをフィルタリングし、残りをそのままにしておく方法があります。たとえば、次のようになります。
これは存在しますが、フィルタリングされていないレベルを保持しません。
それから私はそれを再び溶かす必要があるでしょう、そしてリキャストがある間、再キャストはありません。
誰かがこれを行うための巧妙なトリックを持っていますか?
または、おそらく私はこれを完全に間違った方法で見ています-限界計算は私のためにこれを行いますか?
以下は正確に機能しますが、面倒です。
r - Windowsでのddply()の並列の簡単な動作例
ddply()を並行して使用する簡単な実例を探していました。「foreach」パッケージをインストールしましたが、ddply(.parallel = TRUE)を呼び出すと、「並列バックエンドが登録されていません」という警告が表示されます)
誰かがddplyを並行して使用する簡単な実例を提供できますか?
r - ddply 集計された列名
ddply を使用してデータを集計していますが、出力データ フレームに列名を割り当てる洗練された方法が見つかりません。
現時点で私はこれをやっています:
この
これを行うためのより良い、よりエレガントな方法はありますか?
list - r do.call(rbind) または ddply を使用して tapply からの結果を結合する
年ごとにグループ化された「季節」全体の日付の平均、最小、最大、範囲を取得したい日付/時刻情報があります。最も近いのは、tapply の集計機能です。結果は、最小、最大、第 1 四半期、中央値などの年別のリストであると想定しているだけです。これらは正確には必要なものではありませんが、正常に動作します。
1 シーズンの tapply 関数から取得した結果の例:
私がやりたいことは、さまざまな季節に生成したこれらのリストを、csv にエクスポートできる 1 つの大きな幸せなデータフレームに結合することです。私は検索して検索し、さらに混乱しています。ほとんどの人は、最も簡単なことを提案します
ただし、これによりエラーメッセージまたは空の「テスト」フレームが表示されます。
plyr パッケージについて読んだことがありますが、結果をデータフレームに強制するための tapply の代わりに ddply が機能すると想定していますが、機能を実行させることができないため、それを機能させる方法がわかりません平均、最小、最大、範囲などが必要になります...
私が望む最終結果は次のようなものです:
その後、私はまったく同じことをしたいと思います. 私は、数年に同じ個人が測定された ID フィールドを持っています。各シーズン内の年に渡って、その個人の平均開始日を取得したいと思います。複数年にわたって測定されなかった個人を除外します。
リストと配列を操作する方法、さらには tapply が何をしているのかさえ理解していないので、これらすべてを修正する方法について途方に暮れています。空のデータフレームを作成し、これらすべてのものをループまたは何かに入れますか? 以下は、2、3 年にわたる 4 つの「季節」のサンプル データです。日付と時刻のスタンプがある日付と、日付だけの日付があることに注意してください。
これまでに書いたコードは次のとおりです。
r - 関数内のddplyでオブジェクトが見つからないというエラー
これは、R コードをデバッグする私の能力に本当に挑戦しました。
ddply()
順番に名前が付けられた異なる列に同じ関数を適用するために使用したい。例えば。a、b、c。これを行うには、列名を文字列として繰り返し渡し、 を使用しeval(parse(text=ColName))
て関数が参照できるようにします。私は別の答えからこのテクニックをつかみました。
ddply()
これは、別の関数の中に入れるまではうまくいきます。サンプルコードは次のとおりです。
何か案は?NewColName は関数内でも定義されています!
この質問に対する答えloops-to-create-new-variables-in-ddplyが役立つかもしれないと思いましたが、今日は十分に頭を悩ませたので、手を挙げて助けを求める時が来ました。
r - data.table パッケージで日付を使用する
私は最近 data.table パッケージを発見し、plyr コードの一部を置き換える必要があるかどうか疑問に思っていました。要約すると、私は plyr が本当に好きで、基本的にやりたいことはすべて達成できました。ただし、私のコードはしばらく実行され、高速化の見通しは、いくつかのテストを実行するのに十分でした. これらのテストはすぐに終了しましたが、その理由は次のとおりです。
私が plyr で頻繁に行うことは、日付を含む列でデータを分割し、いくつかの計算を行うことです。
ただし、日付形式の列を使用しても、data.table では機能しないようです。
パッケージを正しく理解していれば、setkey() を使用した場合にのみ大幅な速度向上が得られます。また、Date と Numeric の間で常に変換を行うのは良いコーディングではないと思います。だから私は何かが足りないのですか、それともdata.tableでそれを達成する簡単な方法はありませんか?
r - plyr daply を使用してデータ フレームを行列に変換する
daply
パッケージ内の関数を使用しようとしていplyr
ますが、正しく出力できません。行列を構成する変数は数値ですが、行列の要素はリストであり、変数自体ではありません。例として、データの小さなサブセットを次に示します。
そして、次のようなマトリックス形式でデータを視覚化できるようにしたいと考えています。
私が使用する代替構文をいくつか示します (後者は、元のデータフレームにここに示すよりも多くの列があるためです)。
ただし、代わりに得られるのはかなり難解です:
str
一部のコメンターが提案したように、出力で関数を使用しました。抜粋を次に示します。
私は何が欠けていますか?また、基本パッケージで簡単にこれを行う方法はありますか? ありがとう!
以下は、Dput
これを再現したい場合のデータフレームです。
r - daply customize output object values
I have a list of key/value pairs and would like to convert it into a 2d matrix where the cells represent the counts for each key/value combination. Here is a sample data frame
At the moment, I am using R's plyr package and the following command for that kind of transformation:
Here is the result matrix object:
The resulting array entries are fine - they give me the key/value counts; but what I actually need are numeric values in the result matrix. It should look like this:
I could do this by iterating the matrix elements and performing the necessary conversions but I am pretty sure that there is a better solution which allows me to do that directly in the daply
function. I just haven't figured out how and appreciate help on this.
r - 大きなdata.frameでの効率的な文字列値のカウント
文字列値列 (リンク) を持つ大きなデータフレーム (〜 600K 行) があります。
フレーム内で特定の文字列値が発生する回数を数えたいと思います。結果は次のようになります。
Rでこれを行う効率的な方法はありますか? フレーム サイズが原因で、フレームをマトリックスに変換できません。現在、plyr パッケージを使用していますが、これは遅すぎます。