問題タブ [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 - 連続変数境界でデータフレームを分割し、両側で計算を実行します
特定の変数の境界値に基づいてデータフレームを分割し、境界の両側で何かを計算して、行列(できればデータフレーム)を出力しようとしています。以下のコード例:
私の結果:
私の連続変数はtdata$a1
であり、からの境界値を使用してデータフレームを毎回2に分割し、分割の各部分に対して1:9
計算を実行してa2
、それを返したいと考えています。
ここでの私の質問:エレガンス(plyr
解決策を検討しましたが、最初のsapplyの使用を避けられません)およびさらに重要なことに、私が気付いていない可能性のある他のR関数の正しい使用法の観点からこれを行うための最良の方法は何ですか?また、私のソリューションは、現在持っているデータフレーム(約10000行)よりもはるかに大きなデータフレームではうまくスケーリングできないのではないかと心配しています。
r - 特定の列にデータフレームを集約し、別の列を表示する
R に次の形式のデータフレームがあります。
関数Score
を使用して列に続いて集計したいmax
しかし、各グループInfo
の列の最大値に関連付けられた列も表示したいと思います。Score
これを行う方法がわかりません。私の望ましい出力は次のようになります。
ヒントはありますか?
python - Python用のHadleyのddplyの実装はありますか?
Hadley のR 用plyrパッケージは非常に役に立ち、データを変換するための優れた DSL だと思います。解決される問題は非常に一般的であるため、R でデータを操作するのではなく、他のプログラミング言語でデータを操作するときに、他のユース ケースに直面します。
Pythonで同様のことを行うモジュールが存在するかどうかを知っている人はいますか? 何かのようなもの:
実装するのはそれほど難しいことではありませんが、既に存在していれば素晴らしいことです。私はそれを実装し、 でitertools.groupby
グループ化してから関数cols
を適用し、op
itertools.chain を使用してすべてをチェーンします。より良い解決策はありますか?
r - ID で集計し、時間の min() と max() を見つけます
次のようなトランザクション データベースを取得しました。
PaymentDate は posix 形式です。トランザクション データでは、時間間隔 (これは十分に文書化されています) ではなく、ID で集計したいと考えています。
min() を Posix 時間で使用すると、最初の日、 max() で最後の日が得られます。これは、すべての ID に必要な情報です。
わかりました、これが私が試したことです:
どうやら、時間による集計ではなく時間の集計が必要な場合、集計は posix 時間では機能しません。
しかし、最初と最後の取引日を取得することは可能でなければなりません?!
返事
わかりました、私はまだ自分の質問に答えることができないので、ここに投稿します:
面白い。ありがとうございました!
私は通常、read.csv で as.is=T オプションを使用してから、strptime を使用して時間を変換します。したがって、データの構造を見ると、次のようになります。
私には、それは要因のようには見えません。列全体で min() と max() を使用でき、機能します。どうやらPOSIXltは思ったより面倒くさいらしい。POSIXltから来て、私はやった
構造を見ると、Class は Date として正しく設定されています。
今ではうまくいくようです。ただし、ddply のみが正しい形式 "2020-01-25" を返しますが、 aggregateとsummaryByは両方とも"18286" 形式で返します。それは 1970 年 1 月 1 日からのことですか? まあ、元に戻せると思います。
ただし、何らかの説明が必要です。また、ddply は非常に低速です。
ああ、なぜ最初に strptime を使うのですか? 元のファイルの日付は、「%d-%m-%y」という別の形式になっています。これに as.Date を直接使用しても機能しないようです。
編集
私のデータの出力
あなたが提案したようにした後にdput:
生データの出力
r - Rの開始日と終了日のリストからグループ内の現在の人を数えるにはどうすればよいですか?
というか、どうすれば私が考えていたよりもうまくやれるのでしょうか。
グループ内に名前と開始日と終了日を含むデータフレームがあります。時間の経過とともにグループ内の人数を含むデータフレームを作成したいと思います。まだ去っていない人もいることに注意してください(終了日はNAです)
これがサンプルデータセットです
ここでは、必要な範囲をカバーする日付のデータフレームを作成します。これはとても汚い感じがします。
ここで、ddplyを使用して結果を生成します。
もっと簡単な方法があるはずですか?
r - 条件に一致するggplot geom_jitterポイントにテキストを追加する
geom_jittered でレンダリングされたポイントにテキストを追加してラベルを付けるにはどうすればよいですか? ジッターされたドットの座標がわからないため、 geom_text は機能しません。geom_text に渡すことができるように、ジッタリングされたポイントの位置をキャプチャしていただけますか?
私の実際の使用法は、geom_jitter でボックスプロットをプロットしてデータ分布を表示することです。外れ値のドットまたは特定の条件に一致するドットにラベルを付けたいと思います (たとえば、プロットの色に使用される値の下位 10%) )。
1 つの解決策は、ジッター プロットの xy 位置をキャプチャし、後で別のレイヤーで使用することです。それは可能ですか?
[アップデート]
Joranの回答から、解決策は、ベースパッケージのジッター関数を使用してジッター値を計算し、それらをデータフレームに追加してgeom_pointで使用することです。フィルタリングのために、彼は ddply を使用してフィルター列 (論理ベクトル) を作成し、それを使用して geom_text のデータをサブセット化しました。
彼は最小限のデータセットを求めました。私はちょうど彼の例を変更しました (ラベル列の一意の識別子)
これは、私のデータを使用した Joran の例の結果であり、ID の表示を最低の 1% に下げています。
そして、これは別の変数によって色を持ち、この変数のいくつかの値 (各グループの最低 1%) を表示するようにコードを変更したものです。
r - 引用符で囲まれた変数のddplyとスペース
ddplyでスペースを使用することは可能ですか?
列名に多くのスペースがあるスプレッドシートのデータを使用していますが、後で元のデータと同じ列名でこのデータをエクスポートしたいので、それらの名前を保持したいと思います。200以上の列があり、make.namesを使用するともちろん適切な名前が付けられますが、元の列名は失われます。
しかし、ddplyはスペースが好きではないようですか?回避策はありますか?
r - 関数内でのddplyの使用
内部でddplyを使用して関数を作成しようとしています。しかし、私は仕事をすることができません。これは私が得たものを再現したダミーの例です。これはこのバグを行うために何かありますか?
r - ddplyの使用中にグローバルインデックスを取得するにはどうすればよいですか?
plyrパッケージのDiamondsデータセットから価格/カラットの面で最良の取引を見つけようとしています
私もです
しかし、私がそれをするとき、私は得ます
したがって、インデックスはddplyによって作成されたサブグループから取得されているようです。ここでは、最初のインデックス4のみがグローバルインデックスに対応しています。new [2、]を検索すると、たとえばFair、D、VS1のタイプではありません。
グローバルインデックスの位置を簡単に取得する方法について何かアイデアはありますか?
たとえば、id列をエレガントに追加するにはどうすればよいですか?より良い解決策はありますか?
r - R モデル仕様の構文に関する質問
plyr チュートリアルを見ると、次の準備ができています。
今いくつかのモデル
との違いは何ですか?
チェックすると
どちらの場合も、同じ番号の同じ列が生成されます。
それでも回帰係数はまったく異なります...
この表記法が何を意味するか分かりますか?