2列のテキストの一部を一致させるにはどうすればよいですか?皆さん、こんにちは。このデータセットについて聞きたいのですが
| ID | A列 | B列 | C列
| D列 |
| 1 | A*05:01 A*25:01 B*08:01 B*39:01 C*05:01 C*07:06 C*07:18 C*12:03 DRB1*05:01 DRB1*07:01 DRB3*01:01 DRB4*09:03N DQA1*02:01 DQA1*05:01 DQB1*02:01 DQB1*02:02 | DQA1*01-03、DQB1*06-03_DQ6 | | |
| 2 | A*20:01 A*60:02 B*08:01 B*28:03 C*02:02 C*03:04 DRB1*01:02 DRB1*13:04 DRB3*02:02 DRB3*02:02 DQA1*01:01 DQA1*01:04 DQA1*01:05 DQA1*05:05 DQA1*05:09 DQB1*02:01 DQB1*05:01 | DQA1*05-01、DQB1*02-01_DQ2 | | |
| 3 | A*01:01 A*01:01 B*08:01 B*38:01 C*06:02 C*09:01 C*07:06 C*07:18 DRB1*07:01 DRB1*07:01 DRB4*01:01 DRB4*01:03 DRB4*01:05N DQA1*02:01 DQA1*02:01 DQB1*02:02 DQB1*03:03 | DQA1*03-03、DQB1*04-01_DQ4 | | |
| 4.... | A*01:01 A*01:01 B*08:01 B*38:01 C*06:02 C*09:01 C*07:06 C*07:18 DRB1*07:01 DRB1*07:01 DRB4*01:01 DRB4*01:03 DRB4*01:05N DQA1*02:01 DQA1*03:03 DQB1*02:02 DQB1*03:03 | DQA1*03-03 、DQB1*04-01_DQ4 | DQA1*02:01 DQA1*03:03 DQB1*02:02 DQB1*03:03 | DQA1*03:03 |
Q1:どうすればいいですか? A列のテキストのみDQA1...とDQB1...をC列に抽出したいと考えています。
Q2:どうしたらいいですか?同じ行のB列とC列の抽出テキストをD列に一致させたい
正規表現コマンドを使用しようとしましたが、* と : で問題が発生し、テキストの一部を複数の ID の 2 つの列と一致させる方法がわかりません...
ID 4.に欲しいものを入れます。この場合:と-は同じです。
事前にご協力いただきありがとうございます。
基本的なデータ分析とモデリングマックOSRe: 2列のテキストの一部を一致させるにはどうすればよいですか?列 D では、数式で Words()、Substitute()、Associative Array() + Intersect を使用して、完全一致を見つけることができます。
aa1 = Associative Array(Words(:Column B, ","));
aa2 = Associative Array(Words(Substitute(:Column C, ":", "-"), " \!N"));
aa1 << Intersect(aa2);
Concat Items(aa1 << Get Keys, ",");
列 C については、正規表現から良いアイデアを得ることができます。一致する文字列のすべての部分を取得することはできません。
編集:
列 C で機能する可能性のあるオプションを 1 つ示します。これが何をするのか理解できない場合は、While ループと Regex を使用することをお勧めします。これは、JMP のパターン マッチングよりも一般的に理解しやすいためです。
result = {};
Pat Match(
:Column A,
Pat Repeat(
(Pat Regex("(DQ[AB]1.+)[\s$]") >> result)
|
Pat Len(1)
)
);
Concat Items(Words(result, " "), ", ");

Re: 2列のテキストの一部を一致させるにはどうすればいいですか?表を開いて、C列とD列に追加された数式を確認してください(どちらの列にも数式が含まれています)。

JMPで数式を作成する方法がわからない場合は、JMPヘルプページ(https://www.jmp.com/support/help/en/17.2/#page/jmp/create-formulas-in-jmp.shtml# )を参照してください。