Reemplazar una fila en blanco con datos de otra fila con una declaración ifHola,
Tengo un conjunto de datos original (tabla 1) y estoy intentando escribirlo en el resultado de la tabla 2.
Si algún número es inferior a 300, se imprimirá la cadena "tipo1" en la columna "resultado1".
Si algún número es superior a 300, imprimirá la cadena "tipo2" en la columna "resultado2".
| Número |
tipo 1 |
tipo 2 |
resultado1 |
resultado2 |
| 100 |
a1 |
a2 |
|
|
| 200 |
b1 |
b2 |
|
|
| 150 |
c1 |
c2 |
|
|
| 275 |
d1 |
d2 |
|
|
| 555 |
e1 |
e2 |
|
|
| 424 |
f1 |
f2 |
|
|
| 572 |
g1 |
g2 |
|
|
| 783 |
h1 |
h2 |
|
|
| 125 |
i1 |
i2 |
|
|
Tabla 1: Datos originales
| Número |
tipo 1 |
tipo 2 |
resultado1 |
resultado2 |
| 100 |
a1 |
a2 |
a1 |
|
| 200 |
b1 |
b2 |
b1 |
|
| 150 |
c1 |
c2 |
c1 |
|
| 275 |
d1 |
d2 |
d1 |
|
| 555 |
e1 |
e2 |
|
e2 |
| 424 |
f1 |
f2 |
|
f2 |
| 572 |
g1 |
g2 |
|
g2 |
| 783 |
h1 |
h2 |
|
h2 |
| 125 |
i1 |
i2 |
i1 |
|
Tabla 2: Resultado
Hasta ahora, lo que he hecho en mi script se muestra a continuación.
dt = Current Data Table();
dt << New Column("result1",
Character,
"Nominal",
For Each Row(If(:Number << 300), :result1 == :type1, "")
);
dt << New Column("result2",
Character,
"Nominal",
For Each Row(If(:Number >> 300), :result2 == :type2, "")
);
Modelado estadístico avanzadoAutomatización y secuencias de comandosLa personalización en masaCompartir y comunicar resultadosRe: Reemplazar una fila en blanco con datos de otra fila con una declaración ifPersonalmente, encuentro que abordar problemas como este utilizando un enfoque similar al de Excel, donde las nuevas columnas se crean con fórmulas individuales aplicadas a cada columna, es confuso e ineficiente.La capacidad de JMP para modificar directamente los valores de la tabla de datos en código JSL "abierto" se puede utilizar para resolver el problema de una manera más limpia y eficiente.
// Create the new columns
dt << New Column( "result1", Character );
dt << New Column( "result2", Character );
// Populate the columns
For Each Row( If( :Number < 300, :result1 = :type1, :result2 = :type1 ) );
Re: Reemplazar una fila en blanco con datos de otra fila con una declaración ifHola jthi. Muy bien, probaré la información de ayuda. El guión funciona. Gracias por la ayuda.
Re: Reemplazar una fila en blanco con datos de otra fila con una declaración ifHay un par de problemas al usar >>/<< como comparación y al usar For Each Row dentro de la creación de columnas. A continuación se muestra una opción para trabajar la sintaxis usando << Establecer cada valor (no olvide que si el valor es exactamente 300 estará vacío)
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(9),
Compress File When Saved(1),
New Column("Number", Numeric, "Nominal", Format("Best", 9), Set Values([100, 200, 150, 275, 555, 424, 572, 783, 125])),
New Column("type1", Character(16), "Nominal", Set Values({"a1", "b1", "c1", "d1", "e1", "f1", "g1", "h1", "i1"})),
New Column("type2", Character(16), "Nominal", Set Values({"a2", "b2", "c2", "d2", "e2", "f2", "g2", "h2", "i2"}))
);
dt << New Column("result1", Character, "Nominal", << Set Each Value(
If(:Number < 300,
:type1
, //else
""
)
));
dt << New Column("result2", Character, Nominal, << Set Each Value(
If(:Number > 300,
:type2
, //else
""
)
));
Le recomiendo encarecidamente que consulte el índice de secuencias de comandos directamente desde el menú Ayuda de JMP y Guía de secuencias de comandos de la página de ayuda de JMP .También hay otras fuentes de secuencias de comandos como
Introducción al lenguaje de secuencias de comandos JMP para conocer la sintaxis