Existe-t-il un moyen plus efficace de le faire dans JSL que dans une boucle?Après avoir trié jm en fonction de la colonne age, ajoutez une nouvelle colonne, découvrez l’âge des lignes adjacentes qui remontent et remontent, l’âge n’est pas renvoyé en même temps. vous beaucoup!
dt = Open ("$ SAMPLE_DATA / Big Class.jmp");
Nouvelle colonne ("nouvelle", Numérique, Continu, Largeur (8));
dt [1, "age"] = 1;
pour (i = 1, i <= nombre de colonnes (1), i ++,
if (dt [i, "âge"] == dt [i-1, "âge"], dt [i, "nouveau"] = 0, dt [i, "nouveau"] = 1);
)

Re: Existe-t-il un moyen plus efficace de faire cela en JSL qu'en boucle?Merci beaucoup! Je vais utiliser l'exemple de comparaison plus tard.Re: Existe-t-il un moyen plus efficace de faire cela en JSL qu'en boucle?Notez que le script que vous avez collé ne correspond pas au script de la capture d'écran.
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 />