選択した列名を数式に入力するRe: 選択した列名を数式に入れるこんにちはグズモーガン0 、
これは素晴らしい脚本です。 Col Mean や Col Std Dev などの他の数式ボタンを追加するには、スクリプトをどのように変更する必要がありますか?
Re: 選択した列名を数式に入れるグズモーガン
あなたは魔法使いです。 あなたが示した両方の方法を試して成功しました。 さらに重要なのは、より多くのスクリプト技術を学べたことです。 どうもありがとう。Re: 選択した列名を数式に入れる最初にいくつかの注意事項を記載します。
- oc は列参照です。構文 oc( Connect Points(1) ) は JMP によって解釈できませんでした。
- オーバーレイ プロットのスクリプト インデックスに示されている構文には列名が必要のようです。以下の例を参照してください。 :Name("ボリューム")(Connect Color (0) ); も受け入れます。
obj = Overlay Plot(
X( :Date ),
Y( :High, :Low, :Close, :Volume ),
Y Scale( Left, Left, Left, Right )
);
obj << Connect Points( 1 );
obj << :Volume( Connect Color( 0 ) );
obj << :Low( Connect Color( "Red" ) );
- オーバーレイ プロットには優れた機能がいくつかありますが、JMP 開発者はおそらくグラフ ビルダーの使用を推奨します。 データテーブルの構造としては、Overlay の方が使いやすいかもしれないので、Overlay を使用します。
- 以下のスクリプトは、Football データ テーブルのサブセットから始まりましたが、追加した列はありません。 次に、移動平均を計算します。 スクリプトはオーバーレイ プロットを作成し、Eval(Parse(EvalInsert())) を使用して、引用符で囲まれた名前とポイントをオフにするオプションを含むスクリプト インデックスに示されている構文を構築します。
- スクリプトの 2 番目の部分では、代替メソッドの開始を示します。 すべてのオーバーレイ列の線と点をオンにします。次に、Xpath() を使用して、ライン セグメントとマーカー セグメントへの参照のリストを作成します。線を非表示にするには、線の幅を 0 に設定します。 ポイントをオフにするには、透明度を 0 に設定します。セグメントを操作する方が単純な構文を使用していることがわかりました。ただし、Xpath() は非常に便利ですが、おそらくより高度なものであると考えられます。それが役立つことを願っています。
Names default to here(1);
dt = current data table();
colnme = "Speed";
oc = Column(dt, colnme);
nc = dt << New Column( colnme || " Moving Average",
Numeric,
Formula(Col Moving Average(oc[],1,4,16) )
);
ovp = Overlay Plot( Y(oc, nc));
ovp << Connect Thru Missing(1);
ncnme = nc << get name;
//The syntax is ovp << :col( opt1);
Eval( Parse(EvalInsert("ovp << :name(\!"^ncnme^\!")(Show Points(0))" ) ) ) ;
//alternate method
ovl = Overlay Plot( Y(oc, nc));
ovl << Connect Thru Missing(1);
lines = ovl << Xpath("//LineSeg");
points = ovl << Xpath("//MarkerSeg");
wait(2);
lines[1] << Line width(0); //turn off line 1
wait(2);
lines[1] << Line width(2); //turn on line 1
wait(2);
lines[1] << Line width(0); //turn off line 1
wait(2);
points[2] << Transparency(0); //turn off points 2
Re: 選択した列名を数式に入れる努力を続けます。 たくさんの進歩を遂げました。選択した列名を数式に入力すると、ダイアログ ボックスの MA パラメーターを使用して、選択した列とその移動平均のオーバーレイ グラフを作成できるようになりました。 ニース。 非常に素晴らしい。 「オーバーレイプロット」機能を使用しています。 両方のグラフのすべての点を変更できますが、プロットの属性の 1 つだけを変更する方法がわかりません。
以下にコード スニペットを示します。 これは機能します:
cn1 = colName || "";
cn2 = colName || " Moving Average";
dt << New Column( colName || " Moving Average",
Numeric,
Formula( Eval( Parse( formulaString ) ) )
);
oc = Column( cn1 );
nc = Column( cn2 );
nw2 << Close Window;
funny = Overlay Plot( Y( oc, nc ), );
funny << (Connect Points( 1 ));
結果のプロットには、MA 点と元の点の両方が接続されています。
ただし、プロットの 1 つだけを変更するために最後の行を変更すると、たとえばこれは機能しません。
funny << oc( Connect Points( 1 ) );
点が接続されていません。
したがって、「oc」は「Overlay Plot」関数では Y 列の 1 つとして認識されますが、上記のステートメントでは認識されません。
誰か手伝ってくれませんか? 私の精神的健康が危険にさらされています。:) スクリプト全体が埋め込まれたデータテーブルを添付しました。スクリプト全体を希望通りにプロットするための小さな自動生成スクリプトが追加されています。このプロットを作成するには、凡例を手動で変更する必要がありました。
ケビン
Re: 選択した列名を数式に入れるわかりました。 そうします。
本当にありがとう、
ケビン
Re: 選択した列名を数式に入れる問題ない。 ただし、私は gz の方法を使用します。 名前に特殊文字を含む列を処理するという点で、より堅牢です。
Re: 選択した列名を数式に入れるありがとう、GZさん
はい、あなたの解決策は私にとってもうまくいきました。 列が選択されていない場合にトラップすることは良いヒントです。 今後も利用させていただきます。
Re: 選択した列名を数式に入れるありがとう、マイク、
はい、それは確かに私にとってはうまくいきました。 そして、さらにスクリプトのテクニックを学びました。
Re: 選択した列名を数式に入れるスクリプトは、列名に特殊な記号が含まれていない場合にのみ機能します。 存在する場合、名前付き参照は :Name("string") である必要があります。 また、列が選択されているかどうかのチェックがスクリプトに追加されました。
Names Default to Here(1);
dt = Current Data Table();
colname = .;
New Window( "Select Column",
x = Col List Box(
Data Table( dt << get name ),
all, <<SET data="https://community.jmp.com/" type=""></SET>
Re: 選択した列名を数式に入れる
これを試して。 Col list box() 部分の最後の 2 行はスクリプトであるように見えます。つまり、セミコロン (または接着剤) で区切られる必要がありました。これらの行の残りは、カンマで区切られた列リスト ボックスの引数です。 Col リスト ボックスの "colName = ... " の部分は、あまり役に立っていないと思われるため、ここではコメント化されています。 スクリプトのボタン ボックス部分で取得することをお勧めします。 必要に応じて、テーブル変数を追加し直すことができます。
リストボックスに数値列のみをロードするようにした方がよいでしょう。 それを正しく行う方法を思い出せませんでした。 現在、すべてがリストボックスにロードされます。 min / max col() を max selected に変更しました。 つまり、一度に 1 つまでです。
数式の部分に関しては、通常、必要な場所に文字列を取得するために少し試行錯誤が必要です。 これは機能するようです。
dt = Current Data Table();
colname = .;
New Window( "Select Column",
x = Col List Box(
Data Table( dt << get name ),
all,//numeric,
//min col( 1 ),
max selected( 1 )//,
//colname = Eval Expr (Expr(x << get selected)[1])//,
//dt << New Table Variable( "Selected Column", (x << get selected)[1] )
),
Button Box( "Moving Average",
colName = Char( (x << get selected)[1] );
//myCol = column(colName);
formulaString = "Col Moving Average( :"|| char(colName) ||", 0, 4, 0 )";
dt << New Column( colName || " Movin Average",
Numeric,
//Formula( Col Moving Average( Name Expr(colname), 0, 4, 0 ) )
Formula( eval(parse(formulaString)) )
)
)
);
Re: 選択した列名を数式に入れるダイアログボックスから列の選択を適切に数式に取り込む方法を見つけようとしています。 私はスクリプトブックの多くのディスカッションとサンプルを調べ、たくさんのことを試しました。 まだサイコロはありません。 スクリプトにあるように、列を選択し、列移動平均の式に基づいて新しい列を作成したいと考えています。 よろしくお願いします。
これが私の最新の試みです:
dt = Current Data Table();
colname = .;
New Window( "Select Column",
x = Col List Box(
Data Table( dt << get name ),
all,
min col( 1 ),
max col( 1 ),
colname = Eval Expr (Expr(x << get selected)[1]),
dt << New Table Variable( "Selected Column", (x << get selected)[1] )
),
Button Box( "Moving Average",
dt << New Column( Char( (x << get selected)[1] ) || " Movin Average",
Numeric,
Formula( Col Moving Average( Name Expr(colname), 0, 4, 0 ) )
)
)
);