Comment puis-je initialiser mes données par rapport à une valeur fixe ?Bonjour, je souhaiterais implémenter une formule permettant « d'initialiser » certaines données de nos tables. Plus précisément, je souhaiterais soustraire de tous les éléments d'une colonne la valeur de la première répétition du test exécuté (l'information de répétition est contenue dans une autre colonne).
Je joins le tableau sur lequel je travaille. La formule serait intégrée dans la colonne « X_35 ». L’idée est d’attribuer à chaque test la valeur contenue dans X_22 obtenue à la première répétition (colonne X_21) de l’analyse, en filtrant cependant par condition de test, en particulier je suis intéressé à séparer par d’autres colonnes (par exemple X_5, X_7 et X_8). Après cela j’appliquerais la différence pour chaque ligne, en obtenant les décalages pour chaque point à partir de la première répétition. J’aimerais trouver une solution en utilisant une formule de colonne si possible, en évitant de saisir les valeurs manuellement.
Je travaille avec JMP 17
Merci
Analyse et modélisation de données de baseExploration et visualisation des donnéesFenêtresRe : Comment puis-je initialiser mes données par rapport à une valeur fixe ?Bienvenue dans la communauté.
Je suis un peu confus quant à ce que vous demandez. Ce que je vois dans vos données, c'est que
La colonne X_31 définit chacun des 8 niveaux de données, chacun de ces regroupements de lignes pour la colonne X_21 ayant des valeurs de sous-groupement de 1 à 980.
Ce que je pense que vous voulez faire, c'est pour une ligne donnée, qui n'a pas la valeur X_21 de 1, regarder ses valeurs pour X_5, X_7 et X_8, puis trouver la valeur initiale pour X les valeurs correspondantes pour la colonne X_22 et soustraire cette valeur de la valeur des lignes actuelles pour la colonne X_22.
Je ne suis pas du tout sûr de mon évaluation. Après examen des données, il existe beaucoup plus de combinaisons pour les colonnes X_5, X_7 et X_8 pour chaque groupe de valeurs initiales X_31.
Ce que vous montrez actuellement dans votre tableau de données fourni, où les valeurs de X_35 sont copiées à partir de la colonne X_22 si la valeur de X_21 est égale à 1, est une chose facile à faire dans JMP. Comprendre ce que vous voulez pour les autres lignes est déroutant. Si vous pouviez fournir quel serait votre résultat attendu pour la ligne 7 et la ligne 14 et les étapes suivies pour arriver à votre résultat, cela serait très utile.
Re : Comment puis-je initialiser mes données par rapport à une valeur fixe ?Bonjour, merci pour la réponse rapide. Désolé pour ma mauvaise explication mais c'est plus complexe à expliquer qu'à résoudre, je l'espère.
Je vais essayer avec un tableau schématique.
Le but est d'obtenir la colonne « Valeur initiale », qui contient, pour chaque mesure, la valeur correspondant à la première répétition selon le type de test, identifié ici comme A ou B. Ensuite, avec une simple différence j'obtiens la valeur décalée de la première expérience en partant de 0.
La formule que vous avez vue dans l’autre message est ma tentative d’écrire la colonne « Valeur initiale » en utilisant une condition if avec le nombre de répétitions, mon problème est de savoir quoi écrire dans l’autre condition pour obtenir la même valeur pour un nombre différent de répétitions.
Merci encore
Re : Comment puis-je initialiser mes données par rapport à une valeur fixe ?Une formule de colonne peut être utilisée pour créer ce que vous voulez
As Constant( dt = Current Data Table() );
currentType = :Type;
theInitialValue = :Value[(dt << get rows where( :Type == CurrentType & :Repetition == 1 ))[1]];
:Value - theInitialValue;

La méthode fonctionne, cependant, étant donné un tableau de données de plus de 55 000, la formule n'est pas très efficace.
Une méthode plus efficace consiste à utiliser un script simple pour créer une nouvelle table contenant uniquement les valeurs initiales, puis à fusionner la table dans la table d'origine, où la correspondance permettra la réplication des valeurs initiales vers tous les enregistrements correspondants.
names default to here(1);
dt=
New Table( "Example2",
Add Rows( 8 ),
New Column( "Type",
Character,
Set Values( {"A", "A", "A", "A", "B", "B", "B", "B"} )
),
New Column( "Repetition",
Numeric,
Set Values( [1, 2, 3, 4, 1, 2, 3, 4] )
),
New Column( "Value",
Numeric,
Set Values( [4, 10, 8, 7, 6, 9, 5, 10] )
)
);
// Create a table with the initial values
dt << select where(:Repetition == 1 );
initialDT = dt << subset( selected rows(1), columns({:Type,:Value}));
// Rename column Value to Initial Value
initialDT:Value << set name("Initial Value");
// Merge the values back to the original table
dt << Update(
With( initialDT ) ,
Match Columns( :Type = :Type )
);
// Create a column that contains the difference
dt << New Column( "Difference",
formula( :Value - :Initial Value )
);

Re : Comment puis-je initialiser mes données par rapport à une valeur fixe ?Si vous effectuez de telles étapes de normalisation plus souvent, vous pouvez envisager l'interface graphique de normalisation .
Outre la soustraction de la « première » valeur, il fournit de nombreuses autres options telles que « dernière », N-1, « médiane », « moyenne » (ces dernières tenant même compte de l'exclusion de lignes).
Vous pouvez décider si vous souhaitez calculer les valeurs - ou si vous préférez une formule qui met automatiquement à jour les valeurs lorsque la colonne d'entrée est mise à jour.
Re : Comment puis-je initialiser mes données par rapport à une valeur fixe ?Merci!
J'essaye maintenant d'implémenter le code avec toutes les variables dont j'ai besoin, pour le moment tout fonctionne.