Scripting For-Schleife zum Multiplizieren von Werten über ZeilenHallo,
Ich bin ziemlich neu in der Skripterstellung in JMP und habe in vielen JMP-Foren nach Lösungen gesucht, aber es ist mir nicht gelungen, die Lösungen für mein spezielles Problem zu ändern.
Ich habe ein Skript, das eine Tabelle mit unbekannter Anzahl von Spalten erzeugt und jeden Wert in der Zeile (es wird nur eine Zeile in der generierten Tabelle generiert) mit den erzeugten Spalten (Spalte 1 * Spalte 2 * Spalte 3 * usw.) multiplizieren möchte. Ich habe die Tabelle für das Beispiel vereinfacht, die tatsächliche Tabelle könnte viel mehr Spalten haben.
Meine Schleife multipliziert jede Zeile mit der nächsten, gibt mir aber nicht die endgültige Antwort aller miteinander multiplizierten Zeilen. Ich möchte auch nur das Endprodukt aller Werte miteinander multiplizieren und brauche 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 )[]) );
)
);
SkriptingBetreff: Scripting For-Schleife zum Multiplizieren von Werten über ZeilenDu arbeitest zu hart.Unten ist, was ich glaube, dass Sie 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 );Betreff: Scripting For-Schleife zum Multiplizieren von Werten über ZeilenSie, Sir, sind absolut wunderbar! Vielen Dank, es funktioniert perfekt! Ich war definitiv damit fertig, Dinge zu komplizieren, haha. du bist so hilfreich!
Betreff: Scripting For-Schleife zum Multiplizieren von Werten über ZeilenNach New Table () benötigen Sie lediglich Folgendes:
Product( i = 1, N Col( dt ), Column( dt, i )[1] );
Betreff: Scripting For-Schleife zum Multiplizieren von Werten über ZeilenIch habe versucht, dies in eine For Each Row für Situationen einzufügen, in denen ich mehrere Zeilen hätte, die ich mit dieser Formel durchlaufen könnte, aber es scheint nicht zu funktionieren, und ich bin 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 übrigen Zeilen den gleichen Wert (75,5%), wenn 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] ));