テキストに基づいて列を分割するこんにちは。1 つの列を 3 つの新しい列に分割し、元の列の文字列の一部を 3 つの新しい列の 1 つに配置しようとしています。テキストの文脈に基づいて。列へのテキストでは、区切り文字に基づいて文字列が解析されることは理解していますが、これでは必要な場所に到達できません。テキストを読み取り、特定のキーワード (年、月、または日) をチェックして、文字列の一部 (「年」、「月」、または「日」の前にある数値) を適切な列に配置する関数が必要です。 。 word() 関数が最初の単語または値を推定できることがわかりました。これで開始できますが、テキストに基づいて値を 3 つの潜在的な列の 1 つに配置する必要があります。 これをコード化する方法について考えている人はいますか?それとも潜在的な回避策のアイデアですか?ご洞察をいただければ幸いです。
添付の例では、列 1 は現在の形式でのデータを示し、列 2 ~ 4 は理想的な状態です。ありがとう!
ステファニー
品質およびプロセスエンジニアリングRe: テキストに基づいて列を分割する何を聞いているのか分かりません。この例には 1 つのデータ テーブルがあり、これが処理されて元のデータ テーブルに 3 つの新しい列が追加されます。それがあなたが求めていることではありませんか?新しい列を既存のデータテーブルに直接作成したいだけの場合、JSL は次のようになります。
Names Default to Here( 1 );
dt = Current Data Table();
// or dt = Data Table("your data table's name");
dt << New Column( "AgeYears" );
dt << New Column( "AgeMonths" );
dt << New Column( "AgeDays" );
For( i = 1, i <= N Rows( dt ), i++,
Match( Word( 2, :Age[i], "- " ),
"day",
:AgeDays[i] =
Num( Word( 1, :age[i], "- " ) ),
"month",
:AgeMonths[i] =
Num( Word( 1, :age[i], "- " ) ),
"year",
:AgeYears[i] =
Num( Word( 1, :age[i], "- " ) )
)
);
ある程度読む必要があるようです。JMP を初めて使用する場合は、「JMP の発見」および「JMP の使用」のドキュメントを読む必要があります。JSL スクリプタになるには、JMP で何が利用できるのかを本当に知る必要があります。また、これら 2 つのドキュメントを読んだ後は、スクリプト ガイドも読む必要があります。
Re: テキストに基づいて列を分割するよく釣れました@ティエリー_S 。ありがとう !
Re: テキストに基づいて列を分割するこれは本当に素晴らしいです、ありがとう@txnelson !このコードにより、データのクリーンアップにかかる時間が大幅に短縮されます。ご返答に感謝いたします。 簡単な質問: 新しい変数を作成して元の dt にマージするのではなく、新しい変数を既存の dt に直接埋め込む方法はありますか?
ステファニー
Re: テキストに基づいて列を分割するこんにちは、
スクリプトの最後に小さなタイプミスがあると思います。最後の Match ケースでは、受け取る列は :AgeMonths[i] ではなく、:Ageyears[i] である必要があります。
最高、
TSRe: テキストに基づいて列を分割するこれに対処する 1 つの方法があります
Names Default To Here( 1 );
dt = New Table( "Example dt",
Add Rows( 10 ),
Set Header Height( 46 ),
New Column( "Age",
Character,
"Nominal",
Set Selected,
Set Values(
{"2-day old", "43-day old", "3-day old",
"3-month old", "4-month old", "5-day old",
"32-day old", "13-year old", "10-year old",
"10-month old"}
)
)
);
dt << New Column( "AgeYears" );
dt << New Column( "AgeMonths" );
dt << New Column( "AgeDays" );
For( i = 1, i <= N Rows( dt ), i++,
Match( Word( 2, :Age[i], "- " ),
"day",
:AgeDays[i] =
Num( Word( 1, :age[i], "- " ) ),
"month",
:AgeMonths[i] =
Num( Word( 1, :age[i], "- " ) ),
"year",
:AgeYears[i] =
Num( Word( 1, :age[i], "- " ) )
)
);
上記は指摘の通り修正しました。