¿Hay una forma más eficiente de hacer esto en JSL que en un bucle?Después de ordenar jm por la columna de edad, agregue una nueva columna, averigüe la edad de las filas adyacentes de arriba a abajo, la edad no se devuelve al mismo tiempo 1. Intento realizar ciclos y me siento lento. Pida mejores métodos. Gracias ¡Tú mucho!
dt = Abrir ("$ SAMPLE_DATA / Big Class.jmp");
Nueva columna ("nueva", numérica, continua, ancho (8));
dt [1, "edad"] = 1;
para (i = 1, i <= Col Number (1), i ++,
if (dt [i, "age" = = dt [i-1, "age"], dt [i, "new"] = 0, dt [i, "new"] = 1);
);

Re: ¿Hay una forma más eficiente de hacer esto en JSL que en un bucle?¡Muchas gracias! Voy a usar la comparación de ejemplo más adelante.Re: ¿Hay una forma más eficiente de hacer esto en JSL que en un bucle?Tenga en cuenta que la secuencia de comandos que pegó no coincide con la secuencia de comandos en la captura de pantalla.
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Sort( By( :age ), Order( Ascending ), Replace Table );
dt << New Column("new",Numeric,Continuous,Width(8));
t0 = hptime();
dt[1,"new"]=1;
for(i=2,i<=Col Number(1),i++,
if(dt[i,"age"]==dt[i-1,"age"],dt[i,"new"]=0,dt[i,"new"]=1);
);
t1 = hptime();
dt << New Column("new2",Numeric,Continuous,Width(8));
t2 = hptime();
column(dt, "new2") << set each value(
If(row() == 1, 1,
:age == Lag(:age,1), 0,
//else
1)
);
t3 = hptime();
show(t3-t2, t1-t0); <BR /><BR />//The results will be different each time, but the second method takes less than 50% of the time <BR />//compared to the for loop.<BR />//t3 - t2 = 257; t1 - t0 = 679;<BR /><BR /><BR />