Tabelle 1 sieht aus wie
| geduldig | Testergebnis 1 | Testergebnis 2 | Testergebnis 3 |
| 1001 | 1 | A | + |
| 1001 | 2 | B | + |
| 1002 | 1 | C | - |
| 1003 | 2 | D | - |
Tabelle 2 sieht aus wie
| geduldig | unerwünschtes Ereignis |
| 1001 | aaa |
| 1002 | aab |
| 1002 | aac |
| 1002 | aad |
| 1003 | bbb |
| 1003 | bbc |
Das Ergebnis, das ich erhalten möchte, sieht so aus:( geduldig Spalte ist eine „gemeinsame Spalte“ für diese beiden Tabellen)
| geduldig | Testergebnis 1 | Testergebnis 2 | Testergebnis 3 | unerwünschtes Ereignis |
| 1001 | 1 | A | + | aaa |
| 1001 | 2 | B | + | |
| 1002 | 1 | C | - | aab |
| | | | | aac |
| | | | | aad |
| 1003 | 2 | D | - | bbb |
| | | | | bbc |
Könnte mir jemand eine Lösung anbieten (so einfach wie möglich)?
Danke
@Chris_Kirchberg Danke für deine Geduld und die sehr ausführlichen Antworten!
Ich hätte beachten sollen, dass dies ein Beispiel ist, das ich aus dem Nichts gemacht habe.
Ich möchte nur eine Tabelle erstellen, die wie dieses Beispiel für andere Programmierteamkollegen aussieht, damit sie LB und AE vergleichen können, indem sie einfach auf dem Bildschirm scrollen.
Oh, ich habe vergessen zu erwähnen, dass bei der mehrfachen Messung eines Tests für einen Patienten wirklich jede Messung eine eigene ID haben sollte, um sicherzustellen, dass unerwünschte Ereignisse (die eine passende ID hätten) jeder Messung ordnungsgemäß zugeordnet werden, ohne dass es zu Verwirrungen kommt ( Wie in meinem Beispiel wurde das unerwünschte Ereignis AAA bei Patient 1001 wiederholt, aber ich gehe davon aus, dass es nicht hätte sein sollen.
Typischerweise ein Datums-/Zeitstempel (oder Studientag) für unerwünschte Ereignisse und ein Datums-/Zeitstempel (oder Studientag) für jede Messung für jeden Test. Wenn angenommen wird, dass die unerwünschten Ereignisse nur eine der gemeldeten Messungen für jeden Test betreffen, wird sie auf diese Weise korrekt angezeigt. Das Gleiche gilt für mehrere unerwünschte Ereignisse am selben Tag, an dem das Testergebnis aufgezeichnet wurde. Zum Beispiel:
Tabelle 1
| Geduldig |
Lerntag |
Test 1 |
Test 2 |
Test 3 |
| 1001 |
1 |
1 |
A |
+ |
| 1001 |
2 |
2 |
B |
+ |
Tabelle 2
| Geduldig |
Lerntag |
Unerwünschtes Ereignis |
| 1001 |
1 |
aaa |
| 1001 |
2 |
|
Tabelle 3 (einfache Verknüpfung mit „Patient“ und „Studientag“ als übereinstimmende Spalten und unter Verwendung der enthaltenen Nichtübereinstimmungen aus beiden Tabellen)
| Geduldig |
Lerntag |
Test 1 |
Test 2 |
Test 3 |
Unerwünschtes Ereignis |
| 1001 |
1 |
1 |
A |
+ |
aaa |
| 1001 |
2 |
2 |
B |
+ |
|
Dies verhindert möglicherweise mehrdeutige versehentliche Zuweisungen und ermöglicht die Verwendung in JMP für weitere Analysen und grafische Darstellungen. Außerdem wird Zeile 2 in Tabelle 2 beim Beitritt nicht wirklich benötigt, da davon ausgegangen wird, dass am Studientag 2 keine Veranstaltungen stattfinden.
Hallo @VBIR ,
Als @txnelson Wie bereits erwähnt, müssten Sie einige Skripts oder mehrere interaktive Schritte ausführen, damit die Tabelle genau so aussieht, wie Sie sie gezeigt haben. Allerdings sind JMP-Tabellen eigentlich nicht dafür ausgelegt, Daten auf diese Weise anzuzeigen. Da es sich um Datentabellen und nicht um Tabellenkalkulationen handelt, würde die einfache Verknüpfung aus der Sicht einer JMP-Datentabelle so aussehen

Dies liegt daran, dass JMP-Tabellen für Analyse- und Grafikzwecke verwendet werden, während Tabellenkalkulationen dazu dienen, numerische Zusammenfassungen zu erstellen, die leichter lesbar sind. In der Welt der klinischen Studien werden Daten normalerweise in der im Bild gezeigten Weise gespeichert, es kann jedoch sein, dass sie eher so angezeigt werden, wie Sie es gezeigt haben.
Das führt zur nächsten Frage: Was ist Ihr Ziel mit der Anzeige der zusammengeführten Daten in der von Ihnen vorgegebenen Weise? Dient es zu Berichtszwecken oder planen Sie eine zusätzliche grafische Darstellung oder Analyse des Ergebnisses?
Die Aufgabe kann durch Hinzufügen einer Zählerspalte zu beiden Tabellen gelöst werden, in der jeweils die Anzahl der vorhandenen wiederholten Patientenwerte gezählt wird
Anschließend kann die Verknüpfung durchgeführt werden, wobei Patient und Theke abgeglichen werden
Abschließend ist die Aufgabe gelöst, indem die Daten wieder nach dem Sortierwert des Patienten sortiert und eine kleine Bereinigung durchgeführt wird

Hier ist die JSL, um die Ergebnisse zu erhalten, aber jede Aufgabe innerhalb der JSL kann problemlos interaktiv erledigt werden
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} );