Skripterstellung für eine For-Schleife zum Multiplizieren von Werten über mehrere Zeilen hinwegHallo,
Ich bin relativ neu in der Skripterstellung in JMP und habe in vielen JMP-Foren nach Lösungen gesucht, es ist mir jedoch nicht gelungen, die Lösungen für mein spezielles Problem zu ändern.
Ich habe ein Skript, das eine Tabelle mit einer unbekannten Anzahl von Spalten erstellt, und möchte jeden Wert in der Zeile (es gibt nur eine Zeile in der generierten Tabelle) mit den erzeugten Spalten (Spalte 1 * Spalte 2 * Spalte 3 * usw.) multiplizieren. Ich habe die Tabelle für das Beispiel vereinfacht, die eigentliche Tabelle könnte viel mehr Spalten haben.
Meine Schleife multipliziert jede Zeile mit der nächsten, liefert mir aber nicht das endgültige Ergebnis aller miteinander multiplizierten Zeilen. Ich möchte auch nur das Endprodukt aller Werte multiplizieren und benötige nicht das Produkt jedes inkrementellen Werts. Jede Hilfe wird sehr geschätzt.
New Table( "tsp",
Add Rows( 1 ),
New Column( "Row 1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values( [0.975] )
),
New Column( "Row 2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values( [0.985] )
),
New Column( "Row 3",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values( [0.983] )
),
New Column( "Row 4",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values( [0.839] )
),
);
Ncol = N col(tsp);
For( i = 1, i <= Ncol, i++,
For( j = i + 1, j <= Ncol, j++,
RTP = Eval( Column( i ) << Get Name ) || " * " || Eval( Column( i+=1 ) << Get Name );
New Column( RTP, Numeric , seteachvalue( Column( i )[] * Column( i+=1 )[]) );
)
);
Qualitäts- und VerfahrenstechnikBetreff: Skripterstellung für eine For-Schleife zum Multiplizieren von Werten über mehrere Zeilen hinwegnvm Ich habe den Fehler mit den Klammern am Ende gefunden, die eine 1 enthalten, obwohl sie leer sein sollten, mein Code hätte es sein sollen
tsp << New Column("RTP", numeric, continuous, Format(Percent, 1));
for each row(:RTP= Product( i = 2, N Col( tsp), Column( tsp, i )[] ))Betreff: Skripterstellung für eine For-Schleife zum Multiplizieren von Werten über mehrere Zeilen hinwegIch habe versucht, dies für Situationen, in denen ich mehrere Zeilen zum Durchlaufen mit dieser Formel hätte, in „Für jede Zeile“ einzufügen, aber es scheint nicht zu funktionieren und ich bin mir nicht sicher, was mein Fehler ist. Ich erhalte den richtigen Wert in „RTP“ für die erste Zeile „A“ (86,9 %) und dann zeigen alle restlichen Zeilen denselben Wert (75,5 %), obwohl sie alle unterschiedlich sein sollten ...
New Table( "tsp",
Add Rows( 5 ),
New Column( "Site",
Character,
"Nominal",
Set Selected,
Set Values( {"A", "B", "C", "D", "E"} )
),
New Column( "Row 1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values(
[0.974, 0.872, 0.927,
0.974, 0.9033]
)
),
New Column( "Row 2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values(
[0.968, 0.902, 0.931, .,
0.962]
)
),
New Column( "Row 3",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values(
[0.944, 0.968, 0.987, ., .]
)
),
New Column( "Row 4",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values( [0.9847, 0.9471, ., ., .] )
),
New Column( "Row 5",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values( [0.990, 0.994, ., ., .] )
)
);tsp << New Column("RTP", numeric, continuous, Format(Percent, 1));
for each row(:RTP= Product( i = 2, N Col( tsp), Column( tsp, i )[1] ));
Betreff: Skripterstellung für eine For-Schleife zum Multiplizieren von Werten über mehrere Zeilen hinwegAlles, was Sie nach New Table() benötigen, ist:
Product( i = 1, N Col( dt ), Column( dt, i )[1] );
Betreff: Skripterstellung für eine For-Schleife zum Multiplizieren von Werten über mehrere Zeilen hinwegSie, mein Herr, sind absolut wundervoll! Vielen Dank, es funktioniert perfekt! Ich habe die Dinge definitiv zu kompliziert gemacht, haha. Du bist so hilfreich!
Betreff: Skripterstellung für eine For-Schleife zum Multiplizieren von Werten über mehrere Zeilen hinwegDu arbeitest zu hart.Unten ist, was Sie meiner Meinung nach wollen
names default to here( 1 );
dt = New Table( "tsp",
Add Rows( 1 ),
New Column( "Row 1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values( [0.975] )
),
New Column( "Row 2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values( [0.985] )
),
New Column( "Row 3",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values( [0.983] )
),
New Column( "Row 4",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values( [0.839] )
),
);
Ncol = N Col( dt ); // or NCol = N Col( data table("tsp"));
value = 1;
For( i = 1, i <= Ncol, i++,
value = Column( dt, i )[1] * value
);
Show( value );