Text to Columns 結果の列組み込みの JSL Text to Columns() 関数を使用しています。 入力テキストに「セグメント」がいくつあるのかがわからないため、関数を呼び出した結果として新しい列がいくつできるかは事前にわかりません。 ただし、スクリプトで後続の特定のステップを実行できるように、これを知る必要があります。
これがアドインだった頃、Jeff Perkinson の v3 は作成された列の名前を示す結果を返しました。組み込まれているバージョンでは何も返されないようです (?)。 彼の v3 をインストールしましたが、彼のバージョンの関数にスクリプトでアクセスできません。 (私は現在 JMP 15 EA を使用しています。v3 のドキュメントに記載されているように、名前空間で関数を呼び出そうとした以外は何もいじっていません)。
質問:
1. Text to Columns() の組み込みバージョンを使用すると仮定して、作成された列の名前 (または少なくとも作成された列の *数*) を取得する良い方法は何ですか。
2. JP の v3 を使用する方がよいでしょうか。使用する場合、最近ではどのようにしてそれを呼び出し可能にすればよいでしょうか。
ジョン
Re: Text to Columns の結果列これは私にとってはうまくいきます:
Add Custom Functions(
New Custom Function(
"my",
"Text to Columns",
// Wraps native Text to Columns() to make it return an associative array,
// containing the split column name(s) split (as keys), and the number of
// columns added (as values)
Function( {columns, delims, table = Current Data Table()},
// First parameter should be a list, but accept single value without brackets
If( Not( Is List( columns ) ),
columns = {columns}
);
columns = table << Get Column Reference( columns );
If( Not( Is String( delims ) ),
Throw()
);
n_cols = N Items( columns );
result = Associative Array();
For( i = 1, i <= n_cols, i++,
cols_before = N Cols( table );
Eval( Parse( Eval Insert( "^table^ << Text to Columns(delimiters(\!"^delims^\!"), columns(^columns[i]^))" ) ) );
cols_added = N Cols( table ) - cols_before;
result << Insert Item( columns[i] << Get Name, cols_added );
);
Return( result);
)
)
);例:
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Consumer Preferences.jmp" );
my:Text to Columns({:Brush Delimited, :Floss Delimited}, ",", dt)
["Brush Delimited" => 4, "Floss Delimited" => 4]
Re: Text to Columns の結果列組み込みの Text to Columns() をユーザー関数にラップして、この機能を戻り値の形式で追加するだけでよいのではないかと思います。
ジョンRe: Text to Columns の結果列追加された列の数を取得する簡単な方法は次のとおりです。
Names Default To Here( 1 );
dt = New Table( "Example",
Add Rows( 2 ),
New Column( "the text", Character, "Nominal", Set Values( {"A,B,C,D", "X,Y,Z"} ) )
);
nColNow = N Items( dt << get column names );
dt << text to columns( delimiter( "," ), columns( :the text ) );
colAdded = N Items( dt << get column names ) - nColNow;