Ich versuche, ein paar Tabellen zusammen zu kombinieren und habe einige Probleme. Grundsätzlich sehen meine Datenblätter wie folgt aus
| Zeitalter | Sex |
| Patient A | 13 | m |
| Patient B | fünfzehn | F |
| | Diagnose |
Patient A | Diabetes |
| Patient A | HTN |
| Patient B | Asthma |
| Patient B | HTN |
| Patient B | Sepsis |
Ich versuche, eine Tabelle zu erstellen, um die Diagnosen mit den Patientencodes zu kombinieren (um wie in der folgenden Tabelle auszusehen), aber jede Patientendiagnose wird in meinem aktuellen Excel-Format einzeln dargestellt, anstatt jeden Patienten mit all seinen Diagnosen zu kombinieren. Gibt es eine einfache Möglichkeit, diese beiden Tabellen zu kombinieren? Danke!
| | Zeitalter | Sex | Diabetes | HTN | Asthma | Sepsis |
| Patient A | 13 | m | 1 | 1 | 0 | 0 |
| Patient B | fünfzehn | F | 0 | 1 | 1 | 1 |
Dies ist mit ein wenig Manipulation ziemlich einfach zu bewerkstelligen Tabellen->Teilen zuerst in der Diagnosetabelle. Sie müssen nur eine dritte Spalte mit Einsen hinzufügen, die Sie aufteilen.

Sie müssen nur eine dritte Spalte mit Einsen hinzufügen, die Sie aufteilen.

Dann heißt es suchen und die fehlenden Werte (.) durch Nullen ersetzen und verwenden Tabellen->Verbinden von Patient.

Jeffs Antwort ist eine großartige Antwort.Hier ist meine Version, die die JSL verwendet, die mit ähnlichen Schritten wie Jeff erstellt wurde, um die neue Tabelle zu erstellen

names default to here(1);
dtData = New Table( "The Data",
Add Rows( 5 ),
New Column( "Patient ID",
Character,
"Nominal",
Set Values(
{"Patient A", "Patient A", "Patient B", "Patient B", "Patient B"}
)
),
New Column( "Diagnosis",
Character( 16 ),
"Nominal",
Set Values( {"Diabetes", "HTN", "Asthma", "HTN", "Sepsis"} )
)
);
dtDemo = New Table( "The Demographics",
Add Rows( 2 ),
New Column( "Patient ID",
Character,
"Nominal",
Set Values( {"Patient A", "Patient B"} )
),
New Column( "Age", Character( 16 ), "Nominal", Set Values( {"13", "15"} ) ),
New Column( "Sex", Character( 16 ), "Nominal", Set Values( {"M", "F"} ) )
);
// Create a list with just the Patient IDs
summarize( dtData, theIDs = by( :Patient ID));
// Move it into a data table
dtIDs = New Table("theIDs", invisible, new column("Patient ID", character, values(theIDs)));
// Create a list with just the Diagnoses
summarize( dtData, theDiags = by( :Diagnosis));
// Move it into a data table
dtDiags = New Table("theDiags", invisible, new column("Diagnosis", character, values(theDiags)));
// Create a table with all possible combinations of patients and diagnoses
dtCart = dtIDs << Join( With( dtDiags ), Cartesian Join );
// Cleanup
close( dtIDs, nosave );
close( dtDiags, nosave);
// Add a null diagnosis column
dtCart << New Column("foundDiag", set each value(0));
dtData << New Column("foundDiag", set each value(1));
// Put the tables together
dtCart << Update(
With( dtData),
Match Columns( :Patient ID = :Patient ID, :Diagnosis = :Diagnosis )
);
// Split the data into the final form
dtSplit = dtCart << Split(
Split By( :Diagnosis ),
Split( :foundDiag ),
Group( :Patient ID ),
Sort by Column Property
);
// Make a copy of the demographics data table
dtFinal = dtDemo << subset( selected columns(0), selected rows(0));
// put the demographics file together with the split data table
dtFinal << Update(
With( dtSplit ),
Match Columns( :Patient ID = :Patient ID )
);
// Cleanup
close( dtSplit, nosave );
close( dtCart, nosave );