Expr et Nom ExprBonjour,
J'analyse de plus grandes quantités de données, 350 000 lignes.
Pour chaque ligne, le code exécute une boucle pour calculer le delta unique entre le tableau 1 et le tableau 2, puis ajoute ce delta à la colonne du tableau de données principal. Quelque chose n'est pas correct dans le code ci-dessous. Toute suggestion?
Names Default To Here( 1 );
dt1 = Data Table( "dt_ref" );
dt2 = Data Table( "Data table" );
digt = 5;
itsel1 = {"Currents A", "Currents A2", "Currents A3", "Currents A4", "Currents A5"}; //List of columns to align.<BR />
//// Loop to calculate the delta between the dt1 and dt2 and the add the delta to the column of dt2 from the itsel1 list
dt2 << Add Row( 1, At Start );
dt2 << Begin Data Update;
For Each( {element, idx}, itsel1,
Eval(
Eval Expr(
Column( dt2, element ) << Set Each Value(
Expr(
Name Expr( Column( dt2, element ) )
),
Expr(
Num(
Substr( Char( Column( dt1, "Median" )[dt1 << get rows where( :Tests == element )] - Column( dt2, element ) ), 1, digt + 1 )
) + Column( dt2, element )
)
)
)
)
);
dt2 << Delete Row( 1 );
dt2 << End Data Update;
Merci,
Jackie
Automatisation et scriptsRe : Expr et Nom ExprJe ne sais pas quel type de calcul vous effectuez ici
Num(Substr(Char(Column(dt1, "Median")[dt1 << get rows where(:Tests == element)] - Column(dt2, element)), 1, digt + 1)) + Column(dt2, element)
mais quelque chose comme ça pourrait t'aider
Names Default To Here(1);
dt1 = Open("$DOWNLOADS/dt_ref.jmp");
dt2 = Open("$DOWNLOADS/Data table.jmp");
digt = 5;
itsel1 = {"Currents A", "Currents A2", "Currents A3", "Currents A4", "Currents A5"}; //List of columns to align.
dt2_colnames = dt2 << Get Column Names("String");
//// Loop to calculate the delta between the dt1 and dt2 and the add the delta to the column of dt2 from the itsel1 list
For Each({colname}, itsel1,
dt2_col_idx = Contains(dt2_colnames, colname);
If(dt2_col_idx == 0,
Print("Skipped column: " || colname);
continue(); // skip this column
);
dt1_row_idx = Loc(dt1[0, "Tests"], colname);
If(N Items(dt1_row_idx) == 0,
Print("Skipped row: " || colname);
continue();
,
dt1_row_idx = dt1_row_idx[1];
);
dt2[0, dt2_col_idx] = dt2[0, dt2_col_idx] - dt1[dt1_row_idx, "Median"];
);Re : Expr et Nom ExprJ'essaie donc d'aligner les données dans dt2 avec les valeurs médianes de Test dans dt1
Ainsi, la valeur médiane du courant A1 est de 5,408, alors soustrayez chaque ligne du courant A1 dans dt2 et ajoutez-la aux valeurs de ligne du courant A1 dans dt2.
5,408 - 2,4963333333 = 2,912
2,912 + 2,496333333 = 5,40. J'évite les boucles for traditionnelles car j'ai un énorme ensemble de données avec 1 million de lignes et Expr serait plus rapide

Re : Expr et Nom ExprNe vous retrouveriez-vous pas avec la valeur médiane si vous n'arrondissez pas vos valeurs ?
x = médiane,
y = valeur de la ligne,
z = résultat
x - y = z
z + y = x ?
Re : Expr et Nom Expr@jthi C'est exact mais je veux arrondir "z" à 2 décimales puis le rajouter à y. La raison en est de "compenser les données du testeur avec les données de base".