Hola, soy nuevo en Jmp y estoy usando el script para intentar reorganizar un conjunto de datos. Actualmente tengo un conjunto de datos que es el siguiente:
| CARNÉ DE IDENTIDAD | Laboratorio | Valor de laboratorio | Fecha y hora de laboratorio | Medicamento |
| UNA | Hgb | 12 | 5/10/16 6:00 AM | tylenol |
| UNA | Cr | 1 | 5/10/16 6:00 AM | tylenol |
| UNA | K | 4 4 | 5/10/16 6:00 AM | tylenol |
| si | K | 3.7 | 11/6/02 4:00 AM | aspirina |
| si | K | 4.5 4.5 | 11/6/02 7:00 AM | aspirina |
| si | Cr | 1,2 | 11/6/02 7:00 AM | aspirina |
| si | Hgb | 14 | 11/6/02 7:00 AM | aspirina |
| C | Cr | 1,5 | 15/01/09 6:30 a.m. | vitamina D |
| C | Hgb | 12 | 15/01/09 6:30 a.m. | vitamina D |
| C | Hgb | 9 | 15/01/09 9:30 a.m. | vitamina D |
Me gustaría que cada ID sea una sola fila con columnas para cada laboratorio individual. Para cualquier ID puede haber duplicados de diferentes laboratorios, pero me gustaría mantener todos los valores para cada laboratorio y hacerlos una columna separada. Estaba pensando en hacer una variable de conteo después de ordenar por ID y laboratorio para poder combinar y hacer una variable que sería Hgb1, Hgb2, pero no sé cómo hacerlo. Tampoco sé cómo transponer como estoy imaginando.
| CARNÉ DE IDENTIDAD | Hgb1 | Fecha y hora de laboratorio | Hgb2 | Fecha y hora de laboratorio | Cr1 | Fecha y hora de laboratorio | Cr2 | Fecha y hora de laboratorio | K1 | Fecha y hora de laboratorio | K2 | Fecha y hora de laboratorio | Medicamento |
| UNA | 12 | 5/10/16 6:00 AM | | | 1 | 5/10/16 6:00 AM | | | 4 4 | 5/10/16 6:00 AM | | | tylenol |
| si | | | | | | 11/6/02 7:00 AM | | | 3.7 | 11/6/02 4:00 AM | 4.5 4.5 | 11/6/02 7:00 AM | aspirina |
Apreciaría cualquier ayuda.
¡¡¡Gracias!!!
Esto requirió mucho pensamiento y un poco de secuencia de comandos, pero creo que le dará al menos un buen comienzo en lo que necesita. No estaba seguro de lo que realmente quería hacer con los valores de los medicamentos, así que los agregué a cada grupo de laboratorio ... es posible que desee cambiar eso. Además, a JMP no le gustan las columnas con los mismos nombres, así que dejé los nombres con nombres únicos

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>Muchas gracias! Una vez que hice que mi variable ID no fuera una expresión, ¡esto funcionó perfectamente!