問題タブ [rolling-average]
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.
excel - 範囲に含めるのではなく、空白をスキップして、アクティブな行の上 2 つ/下 2 つを含む 5 つの特定のセルの平均
私の Excel のスキルは比較的限られているため、これが数式で実行できるかどうかはわかりませんが、マクロの記録と基本的な編集を行うまでのマクロのスキルがあれば、それが可能になることを願っています.
基本的には、前年の12月と翌年の1月を合わせた年次表があります。ここにリンクされている表は、2-1-2 日次価格平均のスナップショットです 。日付列は列 A です。
基本的に、連続していない可能性のある 5 日間にわたる毎日の平均列から 5 日間の平均を入力する必要があります。空白のセル、つまり土曜日と日曜日を完全にスキップし、それらを範囲に含めないようにする必要がありますが、ここで問題が発生し、特定の平日、つまり価格が公開されていない祝日もスキップする必要があります。また、毎年変わる祝日を考慮して、2017 年 12 月から 2019 年 1 月まで、列のすべてのセルにコピー/ドラッグできるようにするか、毎年簡単に編集できるようにする必要があります。
入れ子になった If ステートメントを入力しました。このステートメントは、土曜日、日曜日、祝日以外の場合は 1 を返し、それ以外の場合は 0 を返します。限られた知識と、日次平均列から空白を除外する簡単な方法を見つけることができなかったという事実により、これは私の最も有望なオプションでしたが、セルを平均化するために必要な正確な式を見つけることができませんアクティブな行、および別の列の値に基づく上下の最初の 2 つ。
このサイトや
他の場所で=IFERROR(SUM(A10;B13;C5;D6;D8)/((A10<>0)+(B13<>0)+(C5<>0)+(D6<>0)+(D8<>0));0)
、
の形式の式を見つけまし
たが、問題は、必要な5つだけではなく、範囲全体の平均に基づいていることです. また、同様の最終結果が得られるように見えたため、これではあまり効果がないこともわかりました。=AVERAGEIF(B1:B1:B3:B3:B5:B5:B7:B7,">0")
=AVERAGEIF($A$1:$A$500,D1,$B$1:$B$500)
SUMPRODUCT
私は機知に富んでそれを機能させようとしている/この作業に依存するワークブック全体の自動化に時間を費やしており、私の時間が無駄だったことをマネージャーに伝えないので、どんな助けも非常に高く評価されます.
事前に感謝し、長文をお詫び申し上げます。
よろしく、
サイモン
python - パンダは加重ローリング平均を計算して別の列に適用します
列の1つに基づいて「ローリングウェイト」を取得し、これらの重みを別の列に因数分解する方法を理解するのに苦労しています。
私はgroupby.rolling.apply (function)
自分のデータを試してみましたが、主な問題は、列の実行中/ローリング平均を重みに変換する方法を概念化し、この重みの「ウィンドウ」を別の列に因数分解することですそれは転がっていません。
また、意図的min_period
に 1 に設定しているため、各グループの最終出力の最初の 2 行が"rwag"
元の出力を反映していることがわかります。
W
重みを導出するローリング列です。
B
ローリング ウェイトを適用する列です。グループ化は列でのみ行われますa
。
df
a
はすでにおよび でソートされていyr
ます。