文字列内の文字の位置を抽出するにはどうすればよいですか?次の列があり、ドットや文字 (数字や特殊文字は含まれません) などの文字列が含まれています。
ドットではない文字の位置をリストする列を生成したいと考えています。 以下の例を参照してください。
JMP で使用できる式やスクリプトはありますか??
・cgaagt・a・・・・・2,3,4,5,6,7,10
· · · · · · · · · · · · · · · · · · · 3,5,19
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
高度な統計モデリング自動化とスクリプト作成データの探索と視覚化Re: 文字列内の文字の位置を抽出するにはどうすればよいですか?拡張する@jthi素晴らしい解決策です。問題を処理する最善の方法は、結果を配置する新しい列を作成することだと思います。また、単なる「.」ではないことも示しました。特殊文字として使用される場合があります。したがって、以下の JSL は複数の特殊文字を処理でき、結果を新しい列に返す数式です。文字列を作成し、そこに数式を切り取って貼り付けるだけです。

list_of_chars = Words( :strings, "" );
Substitute Into( list_of_chars, ".", "", "+", "", "/", "" );
charList = As List( Loc Nonmissing( list_of_chars ) );
Substr( Char( charList ), 2, Length( Char( charList ) ) - 2 );
Re: 文字列内の文字の位置を抽出するにはどうすればよいですか?スクリプトを作成する必要があると思います。
- 文字列をリストに変換します単語(str, "")
- Substitute を使用して、興味のないすべての値を空の文字列 (欠損値) に置き換えます。
- Loc NonMissing を使用して、欠損していない値のインデックスを検索します。
Names Default To Here(1);
a = "·cgaagt··a···········";
b = "··t·a·············c··";
c = "·····················";
list_of_chars = Words(a, "");
Substitute Into(list_of_chars, "·", "");
Show(AsList(Loc Nonmissing(list_of_chars)));
a = "··t·a·············c··";
list_of_chars = Words(a, "");
Substitute Into(list_of_chars, "·", "");
Show(AsList(Loc Nonmissing(list_of_chars)));
a = "·····················";
list_of_chars = Words(a, "");
Substitute Into(list_of_chars, "·", "");
Show(AsList(Loc Nonmissing(list_of_chars)));
//As List(Loc Nonmissing(list_of_chars)) = {2, 3, 4, 5, 6, 7, 10};
//As List(Loc Nonmissing(list_of_chars)) = {3, 5, 19};
//As List(Loc Nonmissing(list_of_chars)) = {};