¿Cómo copiar y pegar celdas de datos de diferentes celdas de identificación?Hola,
Tengo un ejemplo de tabla de datos incluido en esta publicación. Necesito copiar la información de las celdas ProTest de la Fase B a la Fase A en la misma columna. Sin embargo, primero tengo que coincidir con los Test_IDs siguiendo la regla:
Fase A <-> Fase B
1 11
3 13
5 15
7 17
9 19
Tengo diferentes números de participantes debido a la falta de datos.
¿Cómo puedo hacerlo, por favor?
¡Muchas gracias!
Re: ¿Cómo copiar y pegar celdas de datos de diferentes celdas de identificación?oops La secuencia de comandos siempre obtiene solo el primer valor que es la fase A. Por lo tanto, modifique la declaración con un filtro adicional &: Phase == "B"
xx = dt << get rows where(:Subject_ID ==uid & :Test_ID == tid & :Phase=="B");
Re: ¿Cómo copiar y pegar celdas de datos de diferentes celdas de identificación?Increíble, @ gzmorgan0 !! ¡¡Trabajó!!
¿Dónde puedo aprender más acerca de esos comandos, como obtener filas donde () y nrow () ¿Y otros para tener un control total de filas y columnas? ¿El nrow () acepta un entero dentro de él en caso de que desee limitar JMP desplaza el vector?
Intentaré adaptarme a mi problema ... _ / \ _
¡¡Muchas gracias!!
Re: ¿Cómo copiar y pegar celdas de datos de diferentes celdas de identificación?oops La secuencia de comandos siempre obtiene solo el primer valor que es la fase A. Por lo tanto, modifique la declaración con un filtro adicional &: Phase == "B"
xx = dt << get rows where(:Subject_ID ==uid & :Test_ID == tid & :Phase=="B");
Re: ¿Cómo copiar y pegar celdas de datos de diferentes celdas de identificación?Hola @ gzmorgan0
¡Gracias por tu solución! Solo se pudo copiar una puntuación de la Fase B a la Fase A. Es Test_id = 9 (ids iguales). No entendi por que
Su guión está adjunto.
¡Muchas gracias!
Re: ¿Cómo copiar y pegar celdas de datos de diferentes celdas de identificación?Debes mirar en la matriz asociativa de JMP. Piense en una matriz asociativa como una lista con clave. Se define la clave y los valores asociados. Las claves pueden ser cadenas, expresiones, listas, casi cualquier cosa excepto valores decimales numéricos, los enteros están bien. Ver el script modificado a continuación. En otros lenguajes de script, una matriz asociativa se llama un diccionario. Lo uso a menudo.
La respuesta es sí a su otra pregunta, agregue más variables de filtro.
Buena suerte.
Names Default to Here(1);
dt = Data Table("example2_modified");
decode_aa = Associative Array({1,2,5,8,9}, {20,22,55,18,9});
For(i=1, i<=nrow(dt), i++,
if (:Phase[i] =="A",
uid = :Subject_ID[i];
tid = decode_aa[ :Test_ID[i] ];
xx = dt << get rows where(:Subject_ID ==uid & :Test_ID == tid);
if(nrow(xx)==1,
:ProTest[i] = :ProTest[xx[1]]
);
); //end if Phase
); // end For iRe: ¿Cómo copiar y pegar celdas de datos de diferentes celdas de identificación?Brillante, @ gzmorgan0 ! 
Tengo dos preguntas:
1. En caso de que me gustaría agregar más "filtros" o "Por", debo crear más variables (por ejemplo, uid, tid) e insertarlos en la función "obtener filas donde ()", agregando & "Nombre de columna == ' nueva variable '"?
2. Si el Test_id "no puede" definirse como una secuencia lógica tal como "suma 10", ¿cree que es posible crear, por ejemplo, antes (o dentro) "Para la declaración en bucle" una matriz que asocia cada Test_id de la Fase A? a la fase B? De esta manera, el usuario podría definir cualquier asociación entre los identificadores en ambas fases.
Me gustaría agradecerte por tu ayuda!
¡Mejor!
PD: Se incluye en esta publicación una sugerencia para la siguiente asociación y agregué su script en:
Fase A fase B
1 20
2 22
5 55
8 18
9 9
Re: ¿Cómo copiar y pegar celdas de datos de diferentes celdas de identificación?Aunque su tabla está ordenada y es agradable, este script no supone nada, incluso permite la posibilidad de que no haya un ProTest correspondiente.
Names Default to Here(1);
dt = Data Table("example2");
For(i=1, i<=nrow(dt), i++,
if (:Phase[i] =="A",
uid = :Subject_ID[i];
tid = :Test_ID[i] +10;
xx = dt << get rows where(:Subject_ID ==uid & :Test_ID == tid);
if(nrow(xx)==1,
:ProTest[i] = :ProTest[xx[1]]
);
); //end if Phase
); // end For i