Comment créer une nouvelle colonne avec un numéro d'expérience dans une table de données avec des données continues répétitives empilées ?Salut,
J'ai un tableau de données contenant des expériences continues et répétitives. Les données sont donc déjà empilées. J'ai une colonne où chaque nouvelle expérience commence par 1, puis 2, et ainsi de suite jusqu'à la dernière mesure. Je souhaite créer une nouvelle colonne avec le numéro de l'expérience. Ainsi, chaque fois que l'autre colonne commence par 1, une nouvelle expérience commence.
J'ai essayé d'écrire ce script avec l'aide de l'IA, mais ça ne fonctionne pas. J'espère que quelqu'un pourra m'aider.
dt = Tableau de données actuel();
// Colonne utilisée pour identifier les nouvelles expériences
experimentIdentifier = Column(dt, "Column1"); // C'est Column1 qui contient des nombres de 1 à 100 se répétant encore et encore.
// Créer une nouvelle colonne pour les numéros d'échantillon
dt << Nouvelle colonne("SampleNumber", Numérique);
// Initialiser les variables
currentExperiment = experimentIdentifier[1];
numéro d'échantillon = 1;
// Itérer sur chaque ligne en utilisant l'indexation explicite des lignes
Pour(i = 1, i <= N Ligne(dt), i++,
Si(experimentIdentifier[i] != currentExperiment,
// Une nouvelle expérience démarre, réinitialise le numéro d'échantillon
currentExperiment = experimentIdentifier[i];
numéro d'échantillon = 1;
,
// Sinon, incrémenter le numéro d'échantillon
numéro d'échantillon++;
);
// Attribuer un numéro d'échantillon à la nouvelle colonne
dt:SampleNumber[i] = sampleNumber;
);
Automatisation et scriptsFusion et nettoyage des donnéesRe : Comment créer une nouvelle colonne avec un numéro d'expérience dans une table de données avec des données continues répétitives empilées ?Créez une nouvelle colonne et définissez-la comme formule :
Col Cumulative Sum( 1, :Column 1 )
La colonne 1 étant la colonne qui contient les numéros de mesure.
Pet de cerveau.
Re : Comment créer une nouvelle colonne avec un numéro d'expérience dans une table de données avec des données continues répétitives empilées ?Length( Loc( :Column 1[1 :: Row()], 1 ) )
Cette formule fonctionne.
Re : Comment créer une nouvelle colonne avec un numéro d'expérience dans une table de données avec des données continues répétitives empilées ?Vous pouvez utiliser Col Cumulative Sum(), mais ce n'est pas aussi joli.
Col Cumulative Sum( If( :Column 1 == 1, :Column 1, 0 ) )
Re : Comment créer une nouvelle colonne avec un numéro d'expérience dans une table de données avec des données continues répétitives empilées ?Je ne comprends pas comment utiliser cela dans un script.
J'ai également essayé cela, mais jusqu'à présent, toutes les lignes de ma nouvelle colonne ont une valeur de 1. Voyez-vous ce qui ne fonctionne pas ?
dt = données actuelles Table () << Nouvelle colonne("Numéro d'expérience",
Numérique,
Formule(
Si( Row() == 1, 1, // Initialiser le numéro d'expérience à 1 pour la première ligne
Si( :Point No. == 1 & Lag(:Point No.) != 1, Lag(:Expérience No) + 1, // Incrémenter le numéro de l'expérience si « Point No. » est réinitialisé à 1
Lag(:Expérience n°, 1) // Sinon, conservez le même numéro d'expérience
)
)
)
);
Re : Comment créer une nouvelle colonne avec un numéro d'expérience dans une table de données avec des données continues répétitives empilées ?Salut @WhiteCow2000 ,
J'ai essayé de résoudre ce problème en prenant la position où apparaît « 1 », en marquant chacune d'elles d'un nombre croissant, puis en copiant l'option « Remplir > Remplacer la valeur manquante par la valeur précédente », qui peut être exécutée manuellement dans JMP. J'ai ajouté une fenêtre permettant de sélectionner la colonne à mesurer pour plus de flexibilité.
Names Default To Here( 1 );
dt = current data Table ();
dt << Clear Column Selection();
//This will work to find the instance where the lowest number (1 in this case) appears in the row order, if the rows are sorted in any way then it will adapt to that so be careful.
//Window to select the column with repeats
nw = New Window( "Launch Dialog",
<<MODAL></MODAL>
<P>La version simple du script dans laquelle vous devez saisir les noms exacts des colonnes en JSL est ici :<BR /><BR /></P>
<CODE class=" language-jsl">Names Default To Here( 1 );
dt = current data Table ();
//This will work to find the instance where the lowest number (1 in this case) appears in the row order, if the rows are sorted in any way
//Window to select the column with repeats
//Add a column to track experiment number
dt<<NEW column=""></NEW>
Re : Comment créer une nouvelle colonne avec un numéro d'expérience dans une table de données avec des données continues répétitives empilées ?L'IA est assez mauvaise avec JSL. Appliquer ma solution est simple. J'ai également essayé votre dernière formule et elle a bien fonctionné.
dt = New Table( New Column( "Point No.", Set Values( Repeat( 1 :: 100, 4 ) ) ) );
dt << New Column( "Experiment No", Numeric, Formula( Length( Loc( :Point No.[1 :: Row()], 1 ) ) ) );
dt << New Column( "Experiment No", Numeric, Formula( Col Cumulative Sum( If( :Point No. == 1, :Point No., 1, 0 ) ) ) );
dt << New Column( "Experiment No",
Numeric,
Formula(
If( Row() == 1,
1, // Initialize experiment number as 1 for the first row
If( :Point No. == 1<SPAN> & Lag(:Point No.) != 1</SPAN>,
Lag( :Experiment No ) + 1, // Increment experiment number if "Point No." resets to 1
Lag( :Experiment No, 1 ) // Otherwise, keep the same experiment number
)
)
)
);

Re : Comment créer une nouvelle colonne avec un numéro d'expérience dans une table de données avec des données continues répétitives empilées ?Merci beaucoup pour votre aide ! Cela fonctionne maintenant avec la formule « Si » et la formule « Longueur » !
Re : Comment créer une nouvelle colonne avec un numéro d'expérience dans une table de données avec des données continues répétitives empilées ?Je reviens sur ce fil quelques semaines plus tard pour partager une bonne solution à un problème similaire, qui, je pense, pourrait mieux fonctionner avec une formule plus simple :
Résolu : Comment obtenir une nouvelle colonne pour remplir les cycles d'un grand ensemble de données pour plusieurs cycles ? - Communauté d'utilisateurs JMP