問題タブ [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 - Rで最速のトールワイドピボット
私はフォームの単純なテーブルを扱っています
ペア (日付、変数) は一意です。このテーブルをワイドフォームに変換したいと思います。
そして、1e6 レコードのテーブルに対して繰り返し操作を繰り返さなければならないので、可能な限り最速の方法でそれを実行したいと考えています。R ネイティブ モードではtapply()
、reshape()
との両方d*ply()
が によって速度的に支配されていると思いますdata.table
。後者のパフォーマンスを sqlite ベースのソリューション (または他の DB) に対してテストしたいと思います。これは以前に行われたことがありますか?パフォーマンスの向上はありますか? また、「ワイド」フィールド (日付) の数が可変であり、事前にわかっていない場合、sqlite でトールをワイドに変換するにはどうすればよいでしょうか?
r - aaply fails on a vector
I am trying to understand how to use the excellent plyr package's commands on a vector (in my case, of strings). I suppose I'd want to use aaply, but it fails, asking for a margin. But there aren't columns or rows in my vector!
To be a bit more concrete, the following command works, but returns results in a wierd list. states.df is a data frame, and region is the name of the state (returned using Hadley's map_data("state") command). Thus, states.df$region is a vector of strings (specifically, state names). opinion.new is a vector of numbers, named using state names.
What I'd like to do is:
Where ch is the vector of numbers looked up or pulled from opinion.new. But aaply requires an array, and fails on a vector.
Thanks!
r - 関数内の ddply で行全体を取得して処理する
ddply で 1 つ以上を取得して処理するのは簡単ですが、現在の行全体を取得して関数に渡す方法はありますか? または、実行時に決定された一連の列を取得するには?
説明しましょう:
次のようなデータフレームが与えられた場合
次のように、データ フレームの行に沿って名前付きの列を合計する関数を作成できます。
次のような行に対して呼び出すと機能します。
したがって、それを無名関数でラップし、それを ddply で使用して、以下の例のようにテーブルのすべての行に適用したいと思います。
操作する列のセットを実行時に決定できるソリューションを見つけたいので、ddply の引数からそれを分割して任意の数の引数を取る関数に渡すだけの方法があれば、それも機能します。
編集:明確にするために、これを駆動する実際のアプリケーションは合計ではありませんが、これはより簡単な説明でした
r - ddply は因子を「分割」変数としてどのように処理しますか?
20 列の data.frame があります。最初の 2 つは係数で、残りは数値です。mean()
最初の 2 つの列を分割変数として使用し、残りの列に適用したいと思います。
これは、迅速かつ簡単な作業のようにddply()
思えますが、出力 data.frame の結果は、私が探しているものではありません。以下は、データが 1 列だけの最小限の例です。
出力は次のとおりです。
警告は 8 回繰り返されます。おそらく への呼び出しごとに 1 回ですmean()
。これは、因子の平均を取ろうとすることから来ていると思います。私はこれを次のように書くことができます:
また
x = mean(x)
どちらも機能します (NA を与えません) が、数値列ごとに 1 つずつ、18 のステートメントを書き出すのは避けたいと思います。
一般的な解決策はありますか?ddply
他にもっと良い答えがあれば、私はそれに固執しません。
list - Rのグループの回帰と予測を行う
d
実験から次のdata.frameがあります。
過去8年間で、yはfの各レベルについておよそ月に1回(tの正確な日付)測定されました。1か月に2つのメジャーがある場合もあれば、メジャーなしで2、3か月が経過した場合もあります。
サンプルデータを提供していないことをお詫びしますが、不規則な時系列を構成することは私のRの知識を超えています。;)
このデータで次のことを行いたいと思います。
- の各レベルについて、
loess()
関数を使用して回帰を作成します(y ~ t)
f
y
毎月の初日と各レベルの予測を行いますf
Hadleysを使用して解決したと思う最初のポイントは、この質問に対する答えです。
これで、各レベルのモデルを持つmodels
(クラス)ができました。また、次のように各レベルで予測したい時間を作成しました。list
f
y
f
しかし今、私は各モデルの予測を行う方法に固執しています。このようなものが機能するはずです(擬似コード):
結果として、私はこのdata.frameが欲しいです:
- y。予測
- f
- t.predicted(=日付)
どんな助けでも大歓迎です。
r - doSMP を plyr でうまく動作させるにはどうすればよいですか?
このコードは機能します:
このコードは失敗しますが:
R 2.1.12、plyr 1.4、および doSMP 1.0-1 を使用しています。誰かがこれを回避する方法を見つけましたか?
編集: Andrie への回答として、ここにさらに図を示します。
最初の 3 つの関数は機能しますが、すべて約 3 秒かかります。関数 #2 は、並列バックエンドが登録されていないことを警告するため、順次実行されます。関数 #4 は、元の投稿で参照したのと同じエラーを返します。
/edit: 好奇心と好奇心: 私の Mac では、次のように動作します。
しかし、これは失敗します:
そして、これも失敗します:
したがって、 foreach のさまざまな並列バックエンドは交換可能ではないと思います。
r - Rのplyrを使用してより良い要約統計量テーブルを作成する
新しいデータセットを取得するたびに、最初に行うことは要約統計量を確認することです。このsummary
関数はかなりうまく機能しますが、標準偏差、さまざまなブレークポイントを持つ分位数、観測数などに頻繁に関心があります。また、プレゼンテーションは、summary
消化するのに最も簡単な方法ではなく、ジャーナルに表示されるものでもありません(つまり、summary
垂直ではなく水平です)。
たとえば、これが私がいくつかの構成されたデータで要約から得たものです。
しかし、私は本当にこのようなものが欲しいとしましょう。
この小さなデータセット(つまり、いくつかのしっかりした特性)の場合、これは簡単です。しかし、私はより多くの統計またはより多くのスライスダイシングを行うためのより多くのまたは何をすべきかを持っています、それは退屈になる可能性があります。
reshape2
とでこれを試しましplyr
たが、エラーが発生します。
これは私に2つの質問を残します:
- 私は何が間違っているの
ddply
ですか? - ここで車輪の再発明をしていますか?これが私が読み書きするすべての表1であることを考えると、私が見つけていない既存の解決策はありますか?
ありがとう!
r - doMC vs doSNOW vs doSMP vs doMPI: 'foreach' のさまざまな並列バックエンドが機能的に同等ではないのはなぜですか?
さまざまなマシンで実行したいくつかのテスト コードがありますが、常に同じ結果が得られます。さまざまな do... パッケージの背後にある哲学は、foreach の %dopar% のバックエンドとして互換的に使用できるということだと思いました。そうでないのはなぜですか?
たとえば、次のコード スニペットは機能します。
これらのコード スニペットはそれぞれ失敗しますが、
4 つのケースすべてforeach(i = 1:3,.combine = "c") %dopar% {sqrt(i)}
でまったく同じ結果が得られるため、テストした各マシンでパッケージがインストールされ、適切に動作していることがわかります。
doSMP、doSNOW、および doMPI と doMC の違いは何ですか?
r - plyr は変換後に新しい変数を返さない
R/plyrで関数を書く方法を学ぼうとしています。以下に示すことを行うためのより簡単な方法があることは承知していますが、それは重要ではありません。
次の例では、PLYR は新しいデータ フレームに新しい変数を返しません。
私が見逃している明らかなことは何ですか?
r - ddplyが返す結果が多すぎます
何らかの理由で、R-2.13.0へのアップグレードとplyr_1.5.1.tar.gzへのアップグレード以降、予想よりも多くの結果が得られています...古いバージョンのplyrでこれを試しました(残念ながらバージョンは上書きしました...)
結果2の行数がresults1の2倍で、results3の行数が3倍である理由がわかりません。ここで、元のresults1は2回または3回複製されています。
古いバージョンのplyrを使用して、Rバージョン2.11.0パッチ(2010-05-01 r51907)の便利なコピーを入手しました。期待していた結果は...
Rバージョン2.13.0(2011-04-13)から得られる結果
なぜresults2は4行ではなく8行になり、results3は4行ではなく12行になるのですか?
ありがとう、ショーン