Encontrar / Copiar un valor en una celda en una línea diferenteEstoy teniendo problemas para encontrar una buena solución a mi problema particular, incluso después de una búsqueda exhaustiva en el foro y en los archivos de ayuda de JMP.
Tengo un conjunto de datos con pacientes, cada uno de los cuales tiene varias fases de un estudio en filas sucesivas (porque cada paciente tiene un número diferente de fases). Una de las columnas es la fase y en una de estas filas para cada paciente, hay una fase denominada "Base". Estoy tratando de definir una nueva variable para colocar el valor Yy de "Base" en la misma fila que los identificadores de pacientes. Vea abajo:
Paciente # Nombre del paciente Fase Yy = Variable de interés Nueva columna = "Base" [por paciente]
1 Paciente XYZ abc 4 // quiero 2 aquí
1 def 8
1 Base 2
1 ghi 10
2 Paciente MNO abc 45 // quiero 54 aquí
2 def 36
2 ghi 24
2 Base 54
3
3
3
3
Cualquier ayuda es apreciada!
Gracias,
Dibujó
Re: Encontrar / Copiar un valor en una celda en una línea diferenteHay múltiples métodos para hacer esto. @ron_horne El método se puede hacer con apuntar y hacer clic. La siguiente secuencia de comandos utiliza una matriz asociativa que se denomina Diccionario o Búsqueda en otro software.
Me perdi @ron_horne La mesa, así que tengo una diferente. Aquí está el script y se adjunta una tabla con este script incrustado como un script de tabla. Simplemente haga clic para ejecutar.
Names default to here(1);
dt = current data table();
brows = dt << get rows where(:Phase == "Base");
aa = Associative Array( Column("Patient #")[brows], Column("Yy = Variable of interest")[brows]);
// patient numbers are the keys and the Base values, the values
nc = dt << New Column("New Column = \!"Base\!" [by patient]", numeric, Continuous);
nc << set each value(If(length(:Patient Name) > 0, aa[Column("Patient #")[]] ) );Re: Encontrar / Copiar un valor en una celda en una línea diferenteHola @ drmn43 ,
Pruebe el siguiente script en la tabla adjunta.
De lo contrario, es mucho más fácil hacerlo manualmente siguiendo los mismos pasos.
dt = Current Data Table();
dt << select where( :Phase == "Base" );
subdt = dt << Subset( Selected Rows( 1 ) );
dt << clear select;
// make a sleek change of names
subdt << delete columns( "Base by Patient" );
subdt:Name( "Yy = Variable of interest" ) << Set Name( "Base by Patient" );
// Before updating the it is useful to delete columns that we do not want to updat
keep = {"Patient #", "Base by Patient"};
todelete = subdt << get column names( "string" );
For( icol = 1, icol <= N Items( keep ), icol++,
Remove From( todelete, Contains( todelete, Keep[icol] ), 1 )
);
subdt << delete columns( todelete );
dt << Update( With( Data Table( "Subset of Database" ) ), Match Columns( :Patient # = :Patient # ) );
Close( subdt, no save );
Si necesita que las otras filas estén vacías, puedo agregar otro paso o dos para hacerlo.
Ron