数式の適用IF(MONTH(A151)=MONTH(A150),NA(),COUNTIF(W151:W181,1)*100/(COUNTIF(W151:W181,1)+COUNTIF(W151:W181,0))) 。これは、Excel で新しい列を作成するために適用される数式です。列 A には日付が含まれ、列 W には値として 0 と 1 のみが含まれます。列 A と W の値がある場合に、これと同じ式を JMP に適用する方法。
高度な統計モデリングRe: 数式の適用これを私が対処する方法は次のとおりです。
Loc() 関数は、Loc() 関数の 2 番目の引数に一致する行列内のすべての値の行列を返します。したがって
マトリックスを与える
[1,0,1,1,.,5]
それから
Loc( [1,0,1,1,.,5], 1 )
行列を返します
[ 1, 1, 1 ]
したがって、行列内の行数を数えて CountIF を見つけるのは簡単です。
Length( Loc( [1,0,1,1,.,5], 1 ) )
これは値3を返します
完全な式は次のとおりです
If( Month( :A ) == Lag( Month( :A ) ),
.,
wMatrix = :W[Index( Row(), Row() + 29 )];
(Length( Loc( wMatrix, 1 ) ) * 100) / (Length( Loc( wMatrix, 1 ) ) + Length( Loc( wMatrix, 0 ) ));
)
通常、JMP では、データ テーブル内の特定の行数に基づいた計算を回避しようとします。今回のディスカッションはその好例です。上記の式が正しく機能するには、計算を実行するために、月の変更後にデータ テーブルでちょうど 30 行が見つかる必要があります。月によって日数が異なることは誰もが知っています。上記の式に対する次の変更は、月の日数に関係なく、当月のすべてのデータの検索に基づいて計算を行う方法を示しています。
If( Month( :A ) == Lag( Month( :A ) ),
.,
wMatrix = :W[Current Data Table() << get rows where(
Year( :A ) == Year( :A[Row()] ) & Month( :A ) == Month( :A[Row()] )
)];
(Length( Loc( wMatrix, 1 ) ) * 100) / (Length( Loc( wMatrix, 1 ) ) + Length( Loc( wMatrix, 0 ) ));
)
Re: 数式の適用必要なすべての列と予想される結果列を含むテーブルの例を JMP テーブルとして提供していただけますか。データのない Excel 式を JMP 式に変換するよりも、問題を理解しやすくなります。次のようなものが必要になるかもしれません
Col Cumulative Sum(:W, :A) または Col Sum(:W, :A)
Re: 数式の適用ご返信ありがとうございます。この式を適用すると累積合計が得られますが、私の場合は月が変わるたびに、次の30日間の0と1のカウントを取得する必要があります
Re: 数式の適用こんにちは-
返信を書き始めたら、別の投稿に気づきました。これは別の投稿かもしれません…

注記:
月関数は、Excel の Month() 関数と同じように、日付/タイムスタンプでコード化された数値の月の部分を返します。
IF は、現在の行が月の境界上にないかどうかを確認します。これは、JMP の「Missing」を返すように設定されており、Excel の NA() とは少し異なる動作をする可能性があります。
値は 1 と 0 にコード化されているため、{Count 1/(count 0 + count 1)} ではなく、次の 30 行の平均を計算しました。
スプレッドシート指向の数式と、Excel の相対参照 (ラグ、移動平均) のように動作する数式を含む JMP データ テーブル間を移行する場合...
* 意図した動作であることを確認するために、上端と下端の動作を注意深く確認してください。Excelの「上の行」への相対参照を最初の行にコピーすると、#Ref! エラーが返されます。JMPのLag(1)は最初の行に欠損値を返します。また、JMPのローリング平均の詳細も確認してください。残りの行数が30未満になることがあります…(おそらく問題ないかもしれませんが、注意深く見てください)。JMPの数式に条件文を追加することで、この問題を回避できます。if (row()==1、最初の行に特別な処理、それ以外の場合はlag関数を使用)
説明ではテーブル設計の根拠は示されていませんが、現在の月内の 1 値の部分を見つけることが目的で、月ごとに 30 行が順番にソートされると想定されている場合、行数/月 <>30 および行のソートに対して堅牢な別のアプローチがあります...日付/タイムスタンプ列 A を選択して右クリックし、新しい数式列 > 日付 / 時刻 > "月 年" を選択します。
次に、その月/年の「平均」Wを見つけるための新しい数式列を作成します。Col Mean( :was_W, :"Month Year[was_A]"n ) * 100、必要に応じて境界行を見つけるための同様の条件。
Re: 数式の適用あなたの要求は少し不明確ですが、私はあなたの要求に近いと思います - 添付ファイルを参照してください。ランダムな日付の列を作成し、それらを並べ替えました。 W 列は、0 と 1 の値のランダム ベクトルです。この数式は、月単位の変更後、次の 30 日間の 1 の値の端数をカウントします。これが望ましくない場合は、より明確に説明するか、簡単な例を投稿していただけますか。 JMP はスプレッドシートではないため、CountIF などの Excel の数式は常に適切に変換されるわけではないことに注意してください。
Re: 数式の適用それが私の例で実行されたと思ったことです。添付したファイルでは動作しているように見えました。なぜ動作しなかったのか理解したいのですが、あなたのコメントには役立つ情報が何も記載されていません。最初のリクエストと同様に、あなたが何を望んでいるのか、提案ではそれが実現できない理由を理解できるように、もう少し詳細を提供してください。