列リストを使用して多数の列をスタックする方法<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />こんにちは。列名を読み取って列リストとして保存したいのですが、このリストを使用すると、以下に示すコードのように手動でスタックするのではなく、単一のコマンドでこれらの複数の列をスタックできますか?
dt_L5 << スタック(
列(
:名前( "MISC_L5_Test230_2(1)" ),
:名前( "MISC_L5_Test230_2(2)" ),
:名前( "MISC_L5_Test230_2(3)" ),
:名前( "MISC_L5_Test230_2(4)" ),
:名前( "MISC_L5_Test230_2(5)" ),
:名前( "MISC_L5_Test230_2(6)" ),
:名前( "MISC_L5_Test230_2(7)" ),
:名前( "MISC_L5_Test230_2(8)" ),
。
。
。
。
:名前( "MISC_L5_Test230_2(125)" )
)、
ソースラベル列( "Label" )、
積み上げデータ列( "データ" )、
出力テーブル( "L5" )
);
このようなことをしたいのですが:
clist=dt_L5<<列名を取得;
ncols = N 項目(clist);
dt_L5 << スタック(
列(
for(i=1,i<=ncols,i++,
名前リスト = クリスト;
/* 「」をどのように呼び出せばよいですか:Name("名前リスト") " ここ ?? */
);
ソースラベル列( "Label" )、
積み上げデータ列( "データ" )、
出力テーブル( "L5" )
);
Re: 列リストを使用して多数の列をスタックする方法
こんにちは、
最終的なスクリプトは次のようになりますか?
グローバルをクリア (); /* 以前の実行から常駐メモリをクリアします*/
/* ファイルを開きます*/
dt=オープン(
ファイルを選択(
"*.csv ファイルを選択",
現在のディレクトリを取得()、
{"すべての JMP ファイル|jmp;jsl;jrn;csv;txt", "すべてのファイル|*"}
)
);
待機(0);
nc_dt = N Col (); /*ファイル内の列数を取得します*/
待機(0);
clist = dt <<列名を取得; /* スタッキングに使用する列名を取得します*/
ncols = N 項目(clist);
待機(0);
tlist={};
for(i=2,i<=ncols,i++,
insertinto(tlist,clist );
);
待機(0);
dt2 << スタック(
列(eval(tlist))、
ソースラベル列( "Label" )、
積み上げデータ列( "データ" )、
出力テーブル(「DT5」)
);
Re: 列リストを使用して多数の列をスタックする方法素晴らしい! ありがとうMS... JMP8.0を使用していますが、それが問題かもしれません
Re: 列リストを使用して多数の列をスタックする方法わかりました。 私にとっては、 eval() なしでも機能します。 Mac 用 JMP 9.0.3。
これでも機能します。つまり、 columns() 引数内にリストを作成します。 スクリプトの後半でパラメータが必要ない場合に便利です。 ただし、変数を明確に記述すると、コードが読みやすく、デバッグしやすくなります。
dt1_L0 <<スタック(
列( dt1_L0 <<列名を取得する) 、
ソースラベル列( "ラベル" ) 、
積み上げデータ列( "データ" ) 、
出力テーブル( 「L5」 )
) ;
Re: 列リストを使用して多数の列をスタックする方法このフォーラムで検索すると、答えがわかりました.... eval(list) を使用する必要があります。
コリストする= dt1_L5 <<列名を取得する;
dt1_L0 <<スタック(
列(評価(コリストする) ) 、
ソースラベル列( "ラベル" ) 、
積み上げデータ列( "データ" ) 、
出力テーブル( 「L5」 )
) ;
ご協力ありがとうございます!
Re: 列リストを使用して多数の列をスタックする方法もう一度ありがとう! ... stack コマンドの後、ログウィンドウに次のメッセージが表示されます
「「不正な引数」のアクセスまたは評価に列が見つかりません
空の()"
そして、積み上げテーブルの出力が表示されません... :-s ご協力に本当に感謝しています。
列リストを使用して多数の列をスタックする方法継続的に次のようになります。
tリスト= {} ;
のために(私= 1 、私<= ncols 、私++、
もし(私> 3 、
挿入する( tリスト、コリストする[私]) ;
) ;
) ;
または条件なしでイニシャルが変更されたもの私:
tリスト= {} ;
のために(私=4 、私<= ncols 、私++、
挿入する( tリスト、コリストする[私]) ;
) ;
Re: 列リストを使用して多数の列をスタックする方法このようなもの ?? ....
コリストする= dt1_L5 <<列名を取得する;
/*ここでの目的は、前のリストから最初の 3 つを削除して新しいリストを保存することです*/
ncols = N 項目(collist);
for(i=1;i<=ncols;i++,
if(i>3,
tlist=コリスト;
);
);
dt1_L0 <<スタック(
列( ( tリスト) ) 、
ソースラベル列( "ラベル" ) 、
積み上げデータ列( "データ" ) 、
出力テーブル( 「L5」 )
) ;
ここでの「if」ステートメントが正しいかどうかさえわかりません...私の無知を許してください
列リストを使用して多数の列をスタックする方法こんにちは、MSさん
早速のお返事ありがとうございます。 私は JSL の初心者なので、言語をどのように進めればよいのかわかりません。 スタックが引数としてリストを受け入れることを知っておくと便利です。
質問をさらに拡張して、リストから積み上げる列をいくつかだけ選択するにはどうすればよいでしょうか? たとえば、最初の 3 列を積み重ねたくありません。 この目的のために、必要な列名を保存する新しいリストを作成できますか (コリストから最初の 3 つの列名を削除します)。
はい、前のエントリの解決策を見つけたので削除しました
本当にありがとう!
Re: 列リストを使用して多数の列をスタックする方法Stack は引数としてリストを受け取るので、ここではより簡単な方法で実行できます。
コリストする= dt1_L5 <<列名を取得する;
dt1_L0 <<スタック(
列( (コリストする) ) 、
ソースラベル列( "ラベル" ) 、
積み上げデータ列( "データ" ) 、
出力テーブル( 「L5」 )
) ;
プラットフォーム コマンド内での for ループは避けてください。 ところで、前の質問に返信しようとしましたが、[返信を追加] をクリックする前に削除されていました。 おそらくすでに解決策を見つけていると思いますが、それに対する私の見解は次のとおりです。 繰り返しますが、一部のコマンドは引数を評価しない可能性があるため、プラットフォーム内の for ループは常に機能するとは限りません (たとえば、引用符で囲まれた文字列が必要です)。
マンスリーリスト= { 4 、 5 、 7 、 9 、 11 、 12 } ;
風=新しい窓( 「二変量」 、
dt1_L0 <<二変量( Y ( :データ) 、バツ( :価格) 、による( :月) )
) ;
のために(私= 1 、私<= N 個のアイテム(マンスリーリスト) 、私++、
風[ 1 、私、フレームボックス( 1 )] << {フレームサイズ( 633 、 249 ) 、
行の凡例( :フロア、
カラーテーマ( 「JMPデフォルト」 ) 、
マーカーのテーマ( "標準" ) 、
)}
) ;