問題タブ [split-apply-combine]
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 + 要約
わかりました、立て続けに 2 番目の R の質問です。
私のデータ:
ddply
基本的に、通常はとの組み合わせを使用してsummarize
アンサンブルを計算します (たとえば、1 年間の 1 時間ごとの平均)。
上記の場合、時間などのカテゴリを作成します (たとえばstrptime(data$Timestamp,"%H") -> data$hour
、そのカテゴリを で使用してddply
、ddply(data,"hour", summarize, St_01=mean(St_01), St_02=mean(St_02)...)
各列のカテゴリごとに平均化します。
しかし、ここで粘着性が生じます。処理する列が 40 を超えていますが、それらすべてをsummarize
関数のパラメーターとして 1 つずつ入力する準備ができていません。このコードを生成するためにシェルでループを書いていましたが、それはプログラマーが問題を解決する方法ではありませんか?
ですから、同じ結果をより少ないキーストロークで達成するためのより良い方法がある人はいますか?
python - python pandas、DF.groupby()。agg()、agg()の列参照
具体的な問題については、DataFrameDFがあるとします。
すべての「単語」について、「カウント」が最も多い「タグ」を見つけたいと思います。したがって、リターンは次のようになります
カウント列や、順序/インデックスがオリジナルであるか混乱しているのかは気にしません。辞書を返す{ 'the':'S'、...}は問題ありません。
できるといいのですが
しかし、それは機能しません。列情報にアクセスできません。
より抽象的には、agg(function )の関数はその引数として何を見ますか?
ところで、.agg()は.aggregate()と同じですか?
どうもありがとう。
r - `dplyr` 出力に行を追加する
従来plyr
の では、返された行は、そのグループ化の入力行数を超えた場合でも、自動的に出力に追加されます。
で同じことを行う方法がわかりませんdplyr
。いくつかの試み:
どうすればいいですか?
私が反対している特定の使用例は、区切り文字で区切られた\n
テキスト フィールドを分割して「長く」することですが、私はddply
常にこの機能を多くの目的で使用しています。
r - R の 2 つの要素に基づいて縮小されたデータ テーブルを非分割
Rにデータフレームがあり、「factor1」と「factor2」の2列を因子として使用し、上記の因子の各ペアごとに他のすべての列の平均値を計算する必要があるとします。以下のコードを実行すると、最後の行で次の警告が表示されます。
...
なぜそれが起こっているのですか?それを正しくするにはどうすればよいですか? ありがとう。
これが私のコードです:
EDIT1: データ フレームの作成を追加 (上記参照)
java - 現在の項目を前の項目に追加する Java ArrayList。現在のアイテムを削除
コードの目的は、ArrayList> listOfLists の各項目を反復処理し、前のリストを現在のリストに結合し、現在のリストを並べ替えて、次のリストを削除することです (既に結合されているため)。これは、リストが 1 つだけになるまで行う必要があります。これで、ArrayList.get(0) の内容をファイルに吐き出すことができます。
listOfLists はコード部分の前に定義されました。私が苦労しているのは、alStr1 コンテンツを listOfLists.get(0) に戻すにはどうすればよいですか?
提供されるアドバイスは大歓迎です。ありがとう
これは、私が達成しようとしていることを説明します。最初にこれを追加しなかったことをお許しください。
c++ - このRcpp関数を高速化するには?
データセット (行列) がグループに分割され、グループごとの列の合計が返される単純なsplit-apply-combine
ルーチンを実装したいと考えています。Rcpp
これは で簡単に実装できる手順ですR
が、多くの場合かなり時間がかかります。Rcpp
のパフォーマンスを上回るソリューションを実装することR
ができましたが、さらに改善できるかどうか疑問に思っています。説明するために、ここでいくつかのコードを使用しますR
。
-loopsfor
は実際には非常に高速であり、(私にとって) で実装するのが最も簡単であることがわかりましたRcpp
。各グループのサブマトリックスを作成し、マトリックスを呼び出すことで機能colSums
します。これは次を使用して実装されRcppArmadillo
ます。
ただし、この質問への回答に基づいて、 でのコピーの作成にはコストがかかるC++
( の場合と同様R
) が、ループは の場合ほど悪くないことがわかりましたR
。arma
-solution はsubmat
グループごとに (コード内で) マトリックスを作成することに依存しているため、これを回避するとプロセスがさらに高速化されると思います。Rcpp
したがって、ループのみの使用に基づく 2 番目の実装は次のとおりです。
use_dt
@Roland によって提供されたバージョン (私の以前のバージョンは に対して不当に差別されdata.table
た) と@beginneR によって提案された -solutionを含むこれらのソリューションをベンチマークするdplyr
と、次の結果が得られます。
私の直感 (use_Rcpp
よりも優れているuse_arma
) は正しくありませんでした。そうは言っても、if (G(i) != g_id) continue;
関数の行use_Rcpp
がすべてを遅くしていると思います。これを設定するための代替手段について学べてうれしいです。
半分の時間で同じタスクを達成できたことをうれしく思いますがR
、いくつかのRcpp is much faster than R
例が私の期待を台無しにしてしまった可能性があり、これをさらに高速化できるかどうか疑問に思っています。誰にもアイデアはありますか?また、プログラミングやコーディングに関する一般的なコメントも歓迎しRcpp
ますC++
。