動的数式で使用しようとするときに列名の引用符を処理する方法<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />次のように、Greek とAlsoGreek というヘッダーを持つテーブルがあるとします。
ギリシャ語もギリシャ語
アルファ・ファイ
ベータオメガ
ガンマゼータ
次のスクリプトは、2 つの列を結合する「concat」という列を作成します (読みやすくするために、concat 記号の間にタブを追加しました)。
dt = 現在のデータテーブル();
colnames = dt<<列名を取得;
Colstring=":Name(\!"" || char(colnames[1]) || "\!")";
for(i=2,i<=nitems(colnames),i++,
コルストリング=コルストリング || "||" || ":Name(\!"" || char(列名) || 「\!」)」
);
parsecolstring=parse(colstring);
dt<<新しい列("concat",formula(parsecolstring));
ここで奇妙なのは、テーブルヘッダーのAlsoGreekを引用符で囲むと(「AlsoGreek」のように)、コードが機能しないことです。エラー ログの出力は次のとおりです (何が起こっているかを確認できるように、上記のコードのすべての変数の後に show を追加しました)
Colnames = {ギリシャ語, Name("\!"AlsoGreek\!"")};
Char(colnames[1]) = "ギリシャ語";
Colstring = ":Name(\!"ギリシャ語\!")";
Colstring = ":Name(\!"Greek\!")||:Name(\!"\!"AlsoGreek\!"\!")";
「)」を予期していましたが、「AlsoGreek」が見つかりました。
行 1 列 25: :Name("Greek")||:Name(""►AlsoGreek"")
これに対する解決策はありますか?そうでない場合、列名から引用符を抽出する方法はありますか?置換を使用して \!" を削除しようとしましたが、JMP はこれを文字列として認識しません...
助けていただければ幸いです。列名に引用符が含まれる列が 100 個を超えています...
Re: 動的数式で使用する場合の列名の引用符の処理方法あなたが何を達成しようとしていたのか、私には理解するのが難しかったです。 ただし、JMP テーブル内のすべての ColumnName を連結し、その新しい名前で新しい列を作成する場合は、このコードが例で機能するはずです。
変数 NameofNewColumn を作成し、それを EVAL 関数内に含まれる New Column ステートメントで使用します。あなたを助けるかもしれません。
dt = 現在のデータ テーブル();
colnames = dt<<列名を取得;
新しい列の名前 = "";
For(i=1, i < N Items(colnames)+1, i++,
新しい列の名前 = 新しい列の名前 || Char(列名);
);
eval(dt<<新しい列(新しい列の名前)));
Re: 動的数式で使用する場合の列名の引用符の処理方法自分なりの返信になると思いますが…
問題は、JMP が、どの引用符が \!" に関連付けられており、どの引用符が関連付けられていないのかを認識しないことです。したがって、私の疑念は、引用符付きの列で char 関数を使用し、後でそれを解析するか、その文字列に対して別の操作を行うと、問題が発生するのではないかということです。
これを処理するには 2 つの方法があります。1 つ目の方法は、連結したいすべての列をリストに入れてから、parse(concat(list)) オプションを使用することです。
もう 1 つの方法 (私が使用した方法) は、リスト内の列を取得し、単純な for ステートメントを使用して引用符を削除することです。
noquotes={}、
for(i=1,n<=nitems(origlist),i++,
insert into(noquotes,substitute(char(origlist )、"\!""、""));
名前として(オリジナルリスト<<セット名(引用符なし);
);
noquotes リスト名を使用して対象の列を参照します。完了したら、上記のスクリプトの逆を実行して、列名を元の名前に戻すことができます。