列番号をお探しですか?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />こんにちは、みんな、
列番号が必要です。列の名前はわかっていますが、常に同じ空間にあるとは限りません。
まず、列が見つかったときに反復を停止する While ループを使用することにしました。「n」は列番号になりますが、機能しません。
列が見つかりました= 0 ;
n = 0 ;
その間(列が見つかりました== 0 、
n ++;
列名=列名( n ) ;
もし(列名== Vd 、列が見つかりました= 1 、 ) ;
) ;
次のエラーが発生します: 'Column Name' のアクセスまたは評価で無効な引数、Column Name/*###*/(n)
ただし、これを使用すると (今回は実際の数値がわかっています)、探している列名が返されます。
Col = 列名(38);
表示(列);
投稿より(列番号)、msharpの提案を使用しましたが、それでも列番号を取得できず、列名を返すだけですか?
Re: 列番号をお探しですか?msharp さん、ありがとうございます。このことを心に留めておきます。かなりきれいになりました!
Re: 列番号をお探しですか?経験則として。コードやテーブルが列の順序に依存するように設定されている場合は、おそらく何か醜いことをしていると思います。それはうまくいくかもしれませんが、おそらくもっとエレガントで高速な方法があるでしょう。
データの順序は、実際には、データの表示を選択するスクリプトの最後でのみ考慮する必要があります (データは表ではなくグラフで表示する方が通常は適切であるため、ほとんどの場合、その必要さえありません)。
そうは言っても、動作する醜いコードは依然として良いコードです。あなたの場合、データテーブルがスクリプトにどのように供給されるかを制御できないと仮定すると、これが最も簡単な解決策になる可能性があります。ただし、次のようにコードを圧縮することもできます (列番号を知る必要がないことに注目してください)。
列が見つかりました= 0 ;
ncols = ncol ( dt概要) ;
のために(私= 1 、私<= ncols 、私++、
もし(列が見つかりました、
もし(デバイスパス、
デバイスパス--;
に挿入( y_cols 、私、私) ;
、
壊す()
)
) ;
列名= (列名(私) <<名前を取得する) ;
もし(列名== 「ヴド」 、列が見つかりました= 1 ) ;
) ;
Re: 列番号をお探しですか?データ内に常に「Vd」という名前の列が存在するが、毎回異なる場所に存在する可能性があることがわかっている場合、なぜ列番号を使用したくないのでしょうか?Vd 列の後には、リストに挿入する必要がある列が「x」個あります。列の数はスクリプトを実行するまで不明であり、これらの列の名前はデータの結果に基づいて決定されるため、列番号を使用することがなぜ恐ろしいのかわかりません。これらの列が作成されているときにそれらをリストに挿入できると思いますが、なぜ列番号を取得するのが恐ろしいのか説明してください。
列が見つかりました= 0 ;
n = 0 ;
ncols = ncol ( dt概要) ;
のために(私= 1 、私<= ncols 、私++、
列名= (列名(私) <<名前を取得する) ;
もし(列名== 「ヴド」 、列が見つかりました= 1 ;壊す() 、 ) ;
) ;
アイコル= 1 ;
//iCol = Contains(dtsummary << 列名を取得, Column("Vd"));
もし(列が見つかりました== 1 、
y_cols = {} ;
のために( n =アイコル+ 1 、 n <= (アイコル+デバイスパス) 、 n ++、
y_cols =入れる( y_cols 、 n 、 n ) ;
) 、);
Re: 列番号をお探しですか?あなたは私の提案を理解できていないのだと思います。私の提案は、列番号を見つけるべきではないということです。これは不適切なコーディング手法であり、実際にはひどいものです。
Re: 列番号をお探しですか?ありがとう、投稿してよかったです!うまくいきました。両方の投稿から少し理解できました
Re: 列番号をお探しですか?応答に関しては Peter が私に勝ったようですが、ループを使用しない別の方法を次に示します。そのため、列数が多い場合はこの方が高速になるはずです。
dt =開ける( 「$sample_data\Analgesics.jmp」 );
列番号 =含まれています(dt <<列名を取得する、カラム( "薬" ));
「drug」を検索している列名に置き換えるだけで、関連する列番号を取得できます。
ジュリアン
Re: 列番号をお探しですか?ああ、捕まえてくれてありがとう!
私のコードはうまく機能しています、もう一度感謝します。
Re: 列番号をお探しですか?何らかの理由で、列名が見つからない場合、while ループが正しく動作しませんでした。これはもう少しきれいです:
dt =開ける( 「$sample_data\Big Class.jmp」 ) ;
現在のデータテーブル( dt ) ;
ビデオ= "身長" ;
列が見つかりました= 0 ;
n = 0 ;
ncols = ncol ( dt ) ;
のために(私= 1 、私<= ncols 、私++、
列名= (列名(私) <<名前を取得する) ;
もし(列名== Vd 、
列が見つかりました= 1 ;
壊す() ;
) ;
) ;
Re: 列番号をお探しですか?列名は誤解を招きます。「height」ではなく、列 (例:height) が返されます。また、n がテーブル内の列数を超えているかどうかを確認することはありません。このコードは機能します:
dt =開ける( 「$sample_data\Big Class.jmp」 ) ;
現在のデータテーブル( dt ) ;
ビデオ= "身長" ;
列が見つかりました= 0 ;
n = 0 ;
ncols = ncol ( dt ) ;
その間( !列が見つかりました& n <= ncols 、
n ++;
列名= (列名( n ) <<名前を取得する) ;
もし(列名== Vd 、
列が見つかりました= 1
) ;
) ;