表 1 は次のようになります
| 忍耐強い | 検査結果1 | 検査結果2 | 検査結果3 |
| 1001 | 1 | ある | + |
| 1001 | 2 | b | + |
| 1002 | 1 | c | - |
| 1003 | 2 | d | - |
表 2 は次のようになります
| 忍耐強い | 有害事象 |
| 1001 | ああ |
| 1002 | ああ |
| 1002 | aac |
| 1002 | ああ |
| 1003 | BBB |
| 1003 | 黒人ビッグコック |
取得したい結果は次のようになります:(忍耐強い列はこれら 2 つのテーブルの「共有列」です)
| 忍耐強い | 検査結果1 | 検査結果2 | 検査結果3 | 有害事象 |
| 1001 | 1 | ある | + | ああ |
| 1001 | 2 | b | + | |
| 1002 | 1 | c | - | ああ |
| | | | | aac |
| | | | | ああ |
| 1003 | 2 | d | - | BBB |
| | | | | 黒人ビッグコック |
誰かが私に解決策(できるだけ簡単な)を提供してもらえますか?
ありがとう
@Chris_Kirchberg忍耐強く、そして非常に詳細な回答をありがとう!
これは私が何もないところから作った例であることに注意すべきでした。
他のプログラミング チームメイトが画面をスクロールするだけで LB と AE を簡単に比較できるように、この例のような表を作成したいだけです。
ああ、言い忘れていましたが、患者に対してアッセイを複数回測定する場合、混乱を招くことなく各測定値に有害事象(ID が一致する)が適切に配置されていることを確認するために、各測定値には実際に独自の ID が必要です (私の例のように、患者 1001 に対して有害事象 aaa が繰り返されましたが、そうすべきではなかったと思います。
通常、有害事象の日時スタンプ (または研究日) および各アッセイの各測定の日時スタンプ (または研究日)。 そうすることで、有害事象が各アッセイで報告された測定値のうちの 1 つのみに関するものであると想定される場合、それが正しく表示されます。 アッセイ結果が記録された同じ日に複数の有害事象が発生した場合も同様です。 例えば:
表1
| 忍耐強い |
勉強の日 |
アッセイ 1 |
アッセイ 2 |
アッセイ 3 |
| 1001 |
1 |
1 |
ある |
+ |
| 1001 |
2 |
2 |
b |
+ |
表2
| 忍耐強い |
勉強の日 |
有害事象 |
| 1001 |
1 |
ああ |
| 1001 |
2 |
|
表 3 (一致する列として患者と研究日を使用し、両方のテーブルに含まれる不一致を使用する単純な結合)
| 忍耐強い |
勉強の日 |
アッセイ 1 |
アッセイ 2 |
アッセイ 3 |
有害事象 |
| 1001 |
1 |
1 |
ある |
+ |
ああ |
| 1001 |
2 |
2 |
b |
+ |
|
これにより、曖昧で偶発的な割り当てが行われる可能性がなくなり、JMP でのさらなる分析やグラフ作成に使用できるようになります。 また、表 2 の行 2 は、調査 2 日目にはイベントがないと想定されるため、参加する際には実際には必要ありません。
こんにちは@VBIR 、
として@txnelson前述したように、テーブルを表示どおりに表示するには、スクリプトを作成するか、複数の対話型手順を実行する必要があります。 ただし、JMP テーブルは実際にはそのようにデータを表示するように設計されていません。 これらはスプレッドシートではなくデータテーブルであるため、JMP データテーブルの観点から単純な結合は次のようになります。

これは、JMP テーブルが分析とグラフ作成の目的で使用されるのに対し、スプレッドシートは読みやすい数値の概要を作成するために使用されるためです。 臨床試験の世界では、データは通常、画像に示されている方法で保存されますが、表示されている内容に近い場合もあります。
それでは次の質問になります。指定された方法で結合データを表示する目的は何ですか? これはレポート目的でしょうか、それとも結果を使って追加のグラフ作成や分析を行う予定ですか?
このタスクは、両方のテーブルにカウンタ列を追加し、患者の反復値のそれぞれの数をカウントすることで達成できます。
その後、患者とカウンターを照合して結合を実行できます。
最後に、データを並べ替えて患者の並べ替え値に戻し、少しクリーンアップを行うことでタスクが実現されます。

これは結果を取得するための JSL ですが、JSL 内の各タスクは対話的に簡単に実行できます。
Names Default To Here( 1 );
// Create example data tables
dt1 = New Table( "Table1",
Add Rows( 4 ),
New Column( "patient", character, Set Values( {"1001", "1001", "1002", "1003"} ) ),
New Column( "assay result 1", Character, "Nominal", Set Selected, Set Values( {"1", "2", "1", "2"} ) ),
New Column( "assay result 2", Character( 16 ), "Nominal", Set Values( {"a", "b", "c", "d"} ) ),
New Column( "assay result 3", Character( 16 ), "Nominal", Set Values( {"+", "+", "-", "-"} ) )
);
dt2 = New Table( "Table2",
Add Rows( 6 ),
New Column( "patient", Character, Set Values( {"1001", "1002", "1002", "1002", "1003", "1003"} ) ),
New Column( "adverse event", Character( 16 ), "Nominal", Set Values( {"aaa", "aab", "aac", "aad", "bbb", "bbc"} ) )
);
dt1 << New Column( "counter",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
If( Row() == 1, c = 1 );
If( Lag( :patient ) != :patient,
c = 1,
c
++);
c;
)
);
// Add a counter column to both data tables
dt2 << New Column( "counter",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
If( Row() == 1, c = 1 );
If( Lag( :patient ) != :patient,
c = 1,
c
++);
c;
)
);
// Join the tables matching upon patient and counter
dt3 = dt1 << Join(
With( dt2 ),
Merge Same Name Columns,
By Matching Columns( :patient = :patient, :counter = :counter ),
Drop multiples( 0, 0 ),
Include Nonmatches( 1, 1 ),
Preserve main table order( 1 )
);
// Sort the data into patient order
dt3 << sort( by( :patient, :counter ), order( ascending, ascending ), replace table( 1 ) );
// If the data came from only the "With" data table, delete the patient value
dt3:patient[dt3 << get rows where( :match flag == 2 )] = "";
// Clean up the table
dt3 << delete columns( {:Match Flag, :counter} );