<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />こんにちは、みんな、
誰かが下の質問で私を助けることができますか?
以下のような長い数式は避けたいです: (各要素は列名です!)
Column("Std")<<列のプロパティを追加(
方式(
標準偏差(
:F23 m A,:F23 m C,:F23 m H,:F23 MA,:F23 MC,:F23 MH,:F23 NA,:F23 NC,:F23 NH,
:F30 m A,:F30 m C,:F30 m H,:F30 MA,:F30 MC,:F30 MH,:F30 NA,:F30 NC,:F30 NH,
:F36 m A,:F36 m C,:F36 m H,:F36 MA,:F36 MC,:F36 MH,:F36 NA,:F36 NC,:F36 NH,
:F37 m A,:F37 m C,:F37 m H,:F37 MA,:F37 MC,:F37 MH,:F37 NA,:F37 NC, :F37 NH,
:F49 m A,:F49 m C,:F49 m H,:F49 MA,:F49 MC,:F49 MH,:F49 NA,:F49 NC, :F49 NH,
:F53 m A,:F53 m C,:F53 m H,:F53 MA,:F53 MC,:F53 MH,:F53 NA,:F53 NC, :F53 NH,
:F87 m A,:F87 m C,:F87 m H,:F87 MA,:F87 MC,:F87 MH,:F87 NA,:F87 NC, :F87 NH ) ) );
乾杯、
ダン
上記の解決策は両方とも機能しますが、Ron の解決策の場合、式はグローバル変数までしか機能しない可能性があることに注意してください。列名たとえば、JMP セッションが閉じられたときなどに、再定義またはクリアされます。
2 つのアプローチを比較するコードを次に示します。
dt =開ける( "$SAMPLE_DATA/Big Class.jmp" ) ;
列名= dt <<列名を取得する;
// Ron のアプローチ: 式の変数は評価されない
dt <<新しい列( 「スタンダード」 、方式(標準偏差(列名[ 4 :: 5 ]))) ;
// Ian のアプローチ: 数式を設定する前に評価される変数
方式=評価式(標準偏差(式(列名[ 4 :: 5 ]))) ;
dt <<新しい列( 「スタンダード2」 、方式(名前Expr (方式)))) ;
// ログ内の数式を比較
印刷する( :標準<<数式を取得、スタンダード2 <<数式を取得) ;
//変数定義をクリアして行を追加します。 Std2 のみが変更を認識します
グローバルをクリア() ;
現在のデータ テーブル() <<連結する(
開ける( "$SAMPLE_DATA/Students2.jmp" ) 、
最初のテーブルに追加
) ;
こんにちはダンク77 、
イアン@JMPの解決策は正しいです。 ただし、より厳密でないものを探している場合は、次のことを試してください。
数式に必要な列がすべて範囲内にあると仮定すると、次のように最初と最後の列の数を導入できます。
dt =開ける( "$SAMPLE_DATA/Big Class.jmp" ) ;
列名= dt <<列名を取得する;
列= dt <<新しい列( 「スタンダード」 ) ;
列<<数式を設定(標準開発(列名[ 4 :: 5 ] ))) ;
一番、
ロン
このコードは、現在選択されている列を使用するという意味で「回避」するため、入力する必要はありません。 それはあなたが求めているものですか?
「ファイル > 新規 > 新規スクリプト」を実行し、JSL をカット アンド ペーストしてから、「編集 > スクリプトの実行」を実行します。
NamesDefaultToHere ( 1 ) ;
// テーブルを作る
NC = 30 ;
dt =新しいテーブル( "テスト" ) ;
為に( c = 1 、 c <= NC 、 c ++、
dt <<新しい列( 「コル」 ||シャア( c ) 、数値、連続、方式(ランダムノーマル()))) ;
) ;
dt << AddRows ( 100 ) ;
// 列の半分を選択
n =ラウンド( NC / 2 ) ;
c =ランダムインデックス( NCol ( dt ) 、 n ) ;
為に(私= 1 、私<= n 、私++、
桁( dt 、 c [私])) << setSelected ( 1 ) ;
) ;
// このコードを実行して、テーブルで現在選択されている列の標準偏差の新しい数式列を作成します
セル列= dt << getSelectedColumns ;
addCol =式( dt <<新しい列( 「標準偏差」 、数値、連続、方式(標準偏差( colsTBD ))))) ;
代入先( addCol 、式( colsTBD ) 、評価(セル列))) ;
addCol ;