Ciao, sono nuovo di zecca su Jmp e utilizzo lo script per provare a riordinare un set di dati. Attualmente ho un set di dati che è il seguente:
| ID | Laboratorio | Valore di laboratorio | Data e ora del laboratorio | Farmaco |
| UN | Hgb | 12 | 05/10/16 6:00 AM | tylenol |
| UN | Cr | 1 | 05/10/16 6:00 AM | tylenol |
| UN | K | 4 | 05/10/16 6:00 AM | tylenol |
| B | K | 3.7 | 06/11/02 4:00 AM | aspirina |
| B | K | 4.5 | 06/11/02 7:00 | aspirina |
| B | Cr | 1.2 | 06/11/02 7:00 | aspirina |
| B | Hgb | 14 | 06/11/02 7:00 | aspirina |
| C | Cr | 1.5 | 15/01/09 6:30 AM | vitamina D |
| C | Hgb | 12 | 15/01/09 6:30 AM | vitamina D |
| C | Hgb | 9 | 15/01/09 9:30 AM | vitamina D |
Vorrei che ogni ID fosse una singola riga con colonne per ogni singolo laboratorio. Per qualsiasi ID possono essere presenti duplicati di diversi laboratori, ma vorrei mantenere tutti i valori per ciascun laboratorio e renderli una colonna separata. Stavo pensando di creare una variabile di conteggio dopo l'ordinamento per ID e lab in modo da poter combinare e creare una variabile che sarebbe Hgb1, Hgb2, ma non so come farlo. Inoltre non so come trasporre come sto immaginando.
| ID | Hgb1 | Data e ora del laboratorio | Hgb2 | Data e ora del laboratorio | CR1 | Data e ora del laboratorio | Cr2 | Data e ora del laboratorio | K1 | Data e ora del laboratorio | K2 | Data e ora del laboratorio | Farmaco |
| UN | 12 | 05/10/16 6:00 AM | | | 1 | 05/10/16 6:00 AM | | | 4 | 05/10/16 6:00 AM | | | tylenol |
| B | | | | | | 06/11/02 7:00 | | | 3.7 | 06/11/02 4:00 AM | 4.5 | 06/11/02 7:00 | aspirina |
Gradirei qualsiasi aiuto.
Grazie!!!
Questo ha richiesto un sacco di pensieri e un po 'di scripting, ma penso che ti darà almeno un buon inizio su ciò di cui hai bisogno. Non ero sicuro di cosa avresti voluto davvero fare con i valori dei farmaci, quindi li ho aggiunti a ciascun gruppo di laboratorio ... potresti volerlo cambiare. Inoltre, a JMP non piacciono le colonne con gli stessi nomi, quindi ho lasciato i nomi con nomi univoci

names default to here(1);
dt=current data table();
// Add a rowNum column to capture the original data table order
dt << New Column("rowNum", formula(Row()));
dt:rowNum << delete formula;
// Order the data so that a count column can be calculated
dt << sort(by(:Lab, :ID), order(ascending,ascending),replace table(1));
// Add the count value, to count the number of duplicate labs for each ID
dt << new column("count", formula(If( Row() == 1, mycount = 1 );
If( Lag( :ID ) == :ID & Lag( :Lab ) == :Lab,
mycount++,
mycount = 1
);
mycount;));
// Split the data into columns
dtSplit = dt << Split(
Split By( :Lab, :count ),
Split( :Lab Value, :Lab date and time, :Medication ),
Group( :ID ),
Remaining Columns( Drop All ),
Sort by Column Property
);
// Clean up the original data table
dt << sort( by(:rowNum),order(ascending), replace table(1));
dt << delete columns({"count", "rowNum"});
// Order the columns
// Get the list of columns that start with "Lab Value", which
// will be used to order the columns based on them
labValueList = {};
for(i=1,i<=ncols(dtSplit),i++,
If(uppercase(left(column(i)<<GET name=""></GET>Grazie mille! una volta che ho reso la mia variabile ID non un'espressione ha funzionato perfettamente!