Boucle de script For pour multiplier les valeurs sur la ligneSalut,
Je suis relativement nouveau dans les scripts dans JMP et j'ai parcouru de nombreux forums jmp pour trouver des solutions, mais je n'ai pas réussi à modifier les solutions à mon problème particulier.
J'ai un script qui produit une table d'un nombre inconnu de colonnes et je souhaite multiplier chaque valeur de la ligne (il n'y a qu'une seule ligne dans la table générée) sur les colonnes produites (colonne 1 * colonne 2 * colonne 3 * etc.). J'ai simplifié le tableau pour l'exemple, le tableau réel pourrait avoir beaucoup plus de colonnes.
Ma boucle multiplie chaque ligne par la suivante mais ne me donne pas la réponse finale de toutes les lignes multipliées les unes par les autres. Je veux aussi juste que le produit final de toutes les valeurs soit multiplié ensemble et je n'ai pas besoin du produit de chaque valeur incrémentielle. Toute aide est fortement appréciée.
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 )[]) );
)
);
Ingénierie de la qualité et des procédésRe : Script de la boucle For pour multiplier les valeurs sur la lignenvm j'ai trouvé l'erreur avec les crochets à la fin contenant un 1 alors qu'il aurait dû être vide, mon code aurait dû être
tsp << New Column("RTP", numeric, continuous, Format(Percent, 1));
for each row(:RTP= Product( i = 2, N Col( tsp), Column( tsp, i )[] ))Re : Script de la boucle For pour multiplier les valeurs sur la ligneJ'ai essayé de mettre cela dans un For Each Row pour les situations où j'aurais plusieurs lignes à parcourir avec cette formule, mais cela ne semble pas fonctionner et je ne sais pas quelle est mon erreur. J'obtiens la valeur correcte en "RTP" pour la première ligne "A" (86,9%) puis toutes les autres lignes affichent la même valeur (75,5%) alors qu'elles devraient toutes être différentes...
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] ));
Re : Script de la boucle For pour multiplier les valeurs sur la ligneTout ce dont vous avez besoin après New Table() est :
Product( i = 1, N Col( dt ), Column( dt, i )[1] );
Re : Script de la boucle For pour multiplier les valeurs sur la ligneVous monsieur, vous êtes absolument merveilleux ! merci beaucoup ça marche parfaitement ! J'étais définitivement en train de compliquer les choses haha. vous êtes si utile!
Re : Script de la boucle For pour multiplier les valeurs sur la ligneVous travaillez trop dur.Ci-dessous ce que je crois que vous voulez
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 );