Ausdruck und NamensausdruckHallo,
Ich analysiere größere Datenmengen, 350.000 Zeilen.
Für jede Zeile führt der Code eine Schleife aus, um das eindeutige Delta zwischen Tabelle 1 und Tabelle 2 zu berechnen und dieses Delta dann zur Spalte der Hauptdatentabelle hinzuzufügen. Im folgenden Code stimmt etwas nicht. Irgendein Vorschlag?
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;
Danke,
Jackie
Automatisierung und SkripterstellungBetreff: Ausdruck und NamensausdruckIch bin mir nicht sicher, welche Art von Berechnung Sie hier durchführen
Num(Substr(Char(Column(dt1, "Median")[dt1 << get rows where(:Tests == element)] - Column(dt2, element)), 1, digt + 1)) + Column(dt2, element)
aber so etwas könnte dir helfen
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"];
);Betreff: Ausdruck und NamensausdruckIch versuche also, die Daten in dt2 mit den Medianwerten von Test in dt1 abzugleichen
Der Medianwert von „Aktuell A1“ beträgt also 5,408. Subtrahieren Sie also jede Zeile von „Aktuell A1“ in dt2 und addieren Sie diesen Wert wieder zu den Zeilenwerten von „Aktuell A1“ in dt2
5,408 - 2,4963333333 = 2,912
2,912 + 2,496333333 = 5,40. Ich vermeide herkömmliche For-Schleifen, da ich einen riesigen Datensatz mit 1 Mio. Zeilen habe und Expr schneller wäre

Betreff: Ausdruck und NamensausdruckWürden Sie am Ende nicht einfach den Medianwert erhalten, wenn Sie Ihre Werte nicht runden?
x = Median,
y = Zeilenwert,
z = Ergebnis
x - y = z
z + y = x?
Betreff: Ausdruck und Namensausdruck@jthi Das ist richtig, aber ich möchte „z“ auf 2 Dezimalstellen runden und es dann wieder zu y addieren. Der Grund dafür ist die „Verrechnung der Testerdaten mit den Stammdaten“.