問題タブ [reshape2]
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.
performance - R での高性能ビッグデータ操作
リストのコレクションを扱っています。これには、次の事実以外に固定構造のない、深くネストされたリストが含まれています。
- レベル 1 のリストには、
variations
- 階層内のすべてのリーフ データは数値です。
例えば:
リストのデータ構造をreshape
、フォームの融解した (per の) データフレームに変換する必要があります。
または、高速なグループ化とフィルタリングを実行できる別のデータ構造。
データ構造には何百万ものノードがあります。コレクションには数千のエントリを含めることができ、各エントリには数万のバリエーションがあり、名前が不明な 2 ~ 10 以上のリーフ ノードがあります。
コレクションからデータフレームをすばやく構築する方法についての提案を探しています。
1つのアプローチはunlist
、ソースデータで使用してリストを平坦化することですが、次のことについてはわかりません:
unlist
リーフ数値ノードを文字列に変換するデータ構造全体で実行する必要がありますか (これを解析して数値に戻す必要があります)、またはunlist
各バリエーションで使用する必要があります (数値リーフ ノードはそのまま残します)。あまり多くの中間値を生成せずに、値
unlist
を抽出するために作成される長い名前を解析する良い方法は何ですか?variation
variable
正しい方法であるかどうかに関係なくunlist
、私は疑問に思っています:
データフレームを行ごとに構築するのではなく、個別
variation
の 、variable
およびベクトルまたは行列を構築してから、それらをデータフレームに結合する方が良いですか?value
このタイプのデータを処理するために、データフレームを使用するのではなく、別のより高速なデータ構造を使用する必要がありますか? 最終的に使用するものはすべて、
plyr
、reshape
およびで使用するためにデータフレームに変換できる必要がありggplot
ます。
r - 高速な溶けた data.table 操作
パッケージからdata.table
作成されたデータフレームの構造に似た構造を持つオブジェクトを操作するためのパターンを探しています。何百万行ものデータテーブルを扱っています。パフォーマンスは重要です。melt
reshape2
質問の一般化された形式は、列内の値のサブセットに基づいてグループ化を実行し、グループ化操作の結果で 1 つ以上の新しい列を作成する方法があるかどうかです。
質問の特定の形式は、次data.table
のことと同等のことを達成するために使用する方法である可能性があります。dcast
その出力は
r - Rを使用して、複数のファイルを単一のデータベースに溶かしてマージします
私はいくつかの csv ファイルをインポートしようとしてきました。関数「melt」を使用して、それらを R の単一のデータベースにマージします。すべてのファイルには「id」、「date.time」、および「tag」列があります。ただし、残りの列はファイルによって異なります。これは、1 つのファイルに含まれる数行の例です。
このループを使用して各ファイルを溶かし、結果のデータ フレームをバインドしようとしています。ただし、ループ内の最後のファイルに対してのみ機能します。最初に各ファイルの「溶解」を実行し、それらを単一のデータフレームに「マージ/バインド」できるようにループ/関数を設定する方法が正確にはわかりません。
どんな提案でも大歓迎です!
r - 行列内の特定の相関についてRでグラフを生成します
特定のポイントの上下に相関があり、p値が0.01未満の変数(列)間のグラフを生成したいと思います。グラフは、相関する2つの列(変数)をプロットするggplot2(線または棒)グラフになります。
これが私のこれまでのアプローチの要点です。いくつかのダミーデータを使用して、次に進む場所へのポインタが欲しいです。
以下は、var1とvar2の値がTRUEの場合のハードコードされた例です。これは、varAとvarBが相関している複数のプロットを生成するために何らかのループが必要な場所だと思います。
r - 複数の列で定義されたカテゴリ内に値を貼り付けます
result
水平方向に列をピボットして、列がthenで順序付けられている組み合わせごとに個別のdf
行を持つデータセットを作成し
たいと考えています。region
state
county
year
city
また、新しいデータ セットの各行を で識別し、4 つの列の間の空白を削除したいと考えregion
ていstate
ます。以下のコードはそのすべてを行っていますが、あまり効率的ではないと思います。county
results
reshape2
各グループに一意の識別子を作成し、各グループ内の観測に番号を付けずにこれを行う方法はありますか? 行列から空白を削除するために for ループの代わりに apply を使用する方法はありますか? (ここでの行列は、数学またはプログラミング構造とは異なる方法で使用されています。) これらは 2 つの別個の質問であり、各質問を個別に投稿する必要があることを認識しています。
私は望ましい結果を達成でき、コードを改善することだけを考えているので、これを投稿する必要があるかどうかはわかりませんが、学びたいと思っています. アドバイスをありがとう。
編集:
以下の Matthew Lundberg の回答は優れています。その後、上記の 4 つの結果列が数値の有理数を含み、スペースで区切られた出力データ セットも作成する必要があることに気付きました。そのため、マシューの回答を変更する明らかな方法を以下に投稿しました。これが承認されたプロトコルかどうかはわかりませんが、新しいシナリオは元の投稿に直接関連しているように見えるので、新しい質問を投稿する必要はないと思いました.
r - data.frame から因子リストを「アンパック」する
私はRを初めて使用しています/データを簡単に再編成するオプションがあり、解決策を探しましたが、やりたいことを正確に見つけることができません. Reshape2 のメルト/キャストはうまく機能していないようで、ここに含めるほど十分に plyr を習得していません。
基本的に、以下に概説する構造を持つdata.frameがあり、各要素がカテゴリの可変長リストであるカテゴリ列があります(#列がはるかに大きいため、よりコンパクトであり、実際に複数のcategory_listsを持っています別々にしておくのが好きです):
因子としてカテゴリ (および関連する値、つまり列 3/4) を操作したいので、ID と x/y/その他の列の値がカテゴリ リストの長さ:
category_list に factor/facet の別の解決策がある場合、それはより簡単な解決策になりますが、これをサポートするメソッドに遭遇していません。たとえば、次のようにエラーがスローされます。
layout_base(data, cols, drop = drop) のエラー: 少なくとも 1 つのレイヤーに、ファセットに使用されるすべての変数が含まれている必要があります
ありがとう!
r - 2つの変数を1行に転置/キャストする方法は?
私はこれを回す必要があります
これに
すなわち。dfの行をidによって不明な数の列に転置/キャストし、長さが等しくないために空の値が存在する場所にゼロを配置します。
私は実験しました
しかし、それは完全には正しくありません。どうすればいいのですか?
r - 因子レベルのインスタンスを列挙する
同じID変数が複数回出現する長い形式の150000行のデータフレームがあります。これをワイドフォーマットに変換するために(package = reshape(2)ではなくstatから)reshapeを使用しています。インデックスとして使用するIDの特定のレベルの各発生をカウントする変数を生成しています。
plyrを使用して小さなデータフレームでこれを機能させましたが、完全なdfには遅すぎます。これをより効率的にプログラムできますか?
他に約30の変数があるため、reshapeパッケージでこれを行うのに苦労しました。個々の分析ごとに、(df全体ではなく)私が見ているものだけを再形成するのが最善かもしれません。
r - 特定の測定変数をスキップして R でデータを再形成する
次のようなa を再形成したいと思いdata.frame
ます。
私は自分の見た目を次のようにしたいと思いdata.frame
ます:
reshape2
私はパッケージでこれを行おうとしましたがvar1
、残りから分離して、たとえば結果を取得var2_20
し続けることができません。パッケージvar2_30
を使用してこれを行う方法を知っている人はいますか?reshape2
data.frame 出力:
r - ddply() を使用して、相対的なヒストグラム数を集計します
以前の質問に関連して ( ggplot2 y 値で 2 つのヒストグラムを取得する方法 = 1 のカウント / 両方のカウントの合計)、data.frame を応答の入力として受け取る関数を作成しようとしました。いくつかの条件での複数の参加者の時間 (RT) と精度 (正しい) を取得し、ヒストグラムのように集計されたデータを含む「要約」data.frame を出力します。ここでの特異性は、各ビンの応答の絶対数ではなく、相対数を取得したいということです。
私が相対カウントと呼んでいるのは、ヒストグラムの各ビンの値が次のように対応することです。
結果は実際には密度プロットに近くなりますが、1 に等しい各曲線の合計ではなく、正しい曲線と正しくない曲線の合計である点が異なります。
サンプル データを作成するコードは次のとおりです。
最初に、後で ddply で使用する関数を定義する必要があります
次に、メイン関数 (関数内での動作を妨げる 2 つの小さな問題があります。????? の行を参照してください。ただし、関数の外ではこのコードは動作します)。
それをデータに適用するための呼び出し
まず、dcast() と ggplot() で myfactors 変数を使用できる関数として機能させるために、あなたの助けが必要です。
しかし、もっと重要なことは、この関数をもっとエレガントに、そして最も簡単な方法で、より少ないステップで書くことができるとほぼ確信しているということです。
よろしくお願いします。