Extraction de données à partir d'un graphique/tableau de données<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />J'ai un tableau de données qui trace ce qui suit.Je dois trouver les valeurs x correspondantes pour les points les plus proches de y=0.J'ai besoin des deux premiers points (lignes rouges) qui croisent le zéro (le plus proche), le troisième croisement n'a pas d'intérêt.
Je peux trouver la valeur la plus proche en utilisant le script :
valeur = 0 ;
d = Abs((:"col" << obtenir les valeurs) - valeur);
lignes = Loc(d == Min(d));
Afficher (lignes);
Table de données( "DT" ) << sélectionner les lignes(lignes);
Cela renvoie la valeur la plus proche de la ligne zéro, quel que soit le moment où elle se croise.

Ces deux valeurs X entreront dans le dt en tant que nouvelle colonne et seront utilisées pour d'autres calculs.Suis-je sur la bonne voie avec le script ci-dessus ?
BTW, je suis nouveau dans les scripts JMP (et dans la programmation en général).
Merci!
Re : Extraire des données d'un graphique/tableau de donnéesSi vous prenez les données du tableau récapitulatif que vous avez dit avoir calculé et effectuez une table ==> Joignez ces données à votre table de données d'origine, vous pouvez alors les référencer dans votre script.Ou si vous ajoutez manuellement les données, cela fonctionnera.Ainsi, si la colonne appelée « Demi-valeur », il y aura une valeur pour « Demi-valeur » pour chaque ligne, vous pouvez alors remplacer les « 0 » par
Demi-valeur et demi-valeur[I+1]
Si( (dt:y >= dt : demi-valeur & dt:y[I+1]<=dt:Demi-valeur[I+1]..........................
Re : Extraire des données d'un graphique/tableau de donnéesPuisque je prends la moitié de la valeur du maximum, il n'y a pas de valeur de données correspondante dans le tableau de données pour correspondre et obtenir la valeur x.J'ai fait cela pour obtenir la valeur x qui va avec le maximum, mais maintenant ce n'est pas une valeur qui correspond puisqu'il s'agit d'une valeur calculée.J'essaie d'utiliser la demi-valeur comme valeur pour extraire les valeurs x correspondantes.Semblable au script ci-dessus où il obtient les valeurs qui se croisent à zéro, je dois obtenir les valeurs les plus proches de la demi-valeur calculée.J'essayais de définir la demi-valeur en tant que variable pour chaque ID de pièce, de parcourir chaque ID de pièce et d'obtenir les valeurs les plus proches de la demi-valeur :
Cela fonctionnerait de manière similaire au script ci-dessus qui obtient les valeurs les plus proches de zéro, sauf qu'il obtiendrait les valeurs les plus proches des demi-valeurs calculées pour chaque ID de pièce.
Re : Extraire des données d'un graphique/tableau de donnéesSi j'interprète correctement ce que vous demandez, je pense que le moyen le plus simple de prendre votre tableau récapitulatif et de faire une correspondance Tables==>Join sur l'ID de la pièce.Il ajoutera la valeur Max à chaque ligne pour l'ID de pièce approprié
Re : Extraire des données d'un graphique/tableau de donnéesJ'ai encore une question.J'ai un autre paramètre que je collecte à partir de mon ensemble de données et j'ai créé un tableau récapitulatif qui trouve la valeur maximale de ce paramètre.À partir de là, je prends la moitié de cette valeur et l'enregistre dans une nouvelle colonne ("demi-valeur").Je voudrais utiliser la demi-valeur dans le script pour obtenir les valeurs x correspondantes pour chaque ID de pièce :

Chaque ID de pièce aura une demi-valeur différente.Ce qui précède est la section du script où la demi-valeur doit être insérée pour obtenir la valeur de pas correspondante.J'ai du mal à insérer correctement la demi-valeur dans le script et à indexer chaque ID de pièce et la demi-valeur associée. Quelle est la meilleure façon d'insérer la demi-valeur correcte dans le script pour chaque ID de pièce ?
Re : Extraire des données d'un graphique/tableau de donnéesMerci Jim!
Cela fonctionne très bien.
Re : Extraire des données d'un graphique/tableau de donnéesVoici une refonte du code pour incorporer Part ID dans le mix
Noms par défaut ici ( 1 ) ;
dt = Tableau de données actuel () ;
dtout = Nouveau tableau ( "Les sorties" ,
Nouvelle colonne ( "Identifiant de la pièce" , personnage ) ,
Nouvelle colonne ( "PremièreMin" ) ,
Nouvelle colonne ( "DeuxièmeMin" )
) ;
Tableau de données actuel (dt) ;
Pour ( je = 1 , je <= N lignes (dt) - 1 , je ++,
// Au début du bouclage des données et lorsque l'ID de la pièce
// change, les valeurs FirstMin et SecondMin doivent être définies sur
// valeurs manquantes
Si ( je == 1 ,
PremièreMin = . ;
SecondeMin = . ;,
dt : ID de pièce != dt : ID de pièce[i - 1 ] ,
PremièreMin = . ;
SecondeMin = . ;
) ;
// Si une valeur dépasse zéro, traite les données
Si ( (DT : oui >= 0 & DT : y[je + 1 ] <= 0 ) | (DT : oui <= 0 & DT : y[je + 1 ] >= 0 ) ,
Si ( Abdos (DT : oui ) < Abdos (DT : y[je + 1 ] ) ,
min = DT : oui ;
minrow = je ;
,
min = DT : y[je + 1 ] ;
minrow = je + 1 ;
) ;
// S'il s'agit du premier passage, définissez les valeurs pour firstMin
Si ( Est manquant (PremièreMin) ,
PremièreMin = min ;
Première rangée = minrow ;,
// S'il s'agit du deuxième croisement, définissez les valeurs pour SecondMin
// et sélectionne également les lignes de la table de données d'entrée
// et enfin afficher les premier et deuxième résultats vers la sortie
// table de données
// Parce que nous ne collectons que les données des 2 premiers passages
// et utilisent les valeurs FirstMin et SecondMin étant
// manque comme déclencheur dans le script, une fois le premier et le deuxième
// les minimums sont fixés aux valeurs réelles, tous les croisements ultérieurs
// sera ignoré jusqu'à ce qu'un changement d'ID de pièce soit détecté
Est manquant ( Seconde Min ) ,
SecondeMin = min ;
Deuxième rang = minrow ;
// Revenez à la table de données d'entrée pour sélectionner les lignes
tableau de données actuel (dt) ;
Choisi ( État de la ligne ( Première rangée ) ) = 1 ;
Choisi ( État de la ligne ( Deuxième rang ) ) = 1 ;
dtout << ajouter des lignes ( 1 ) ;
dtout : ID de pièce[ N lignes (dtout)] = dt : ID de pièce[SecondRow] ;
dtout : PremièreMin[ N lignes (dtout)] = PremièreMin ;
dtout : SecondeMin[ N lignes (dtout)] = SecondeMin ;
) ;
) ;
) ;
Re : Extraire des données d'un graphique/tableau de donnéesUne autre question pour faire en sorte que ce script parcoure un tableau comportant de nombreuses parties.J'ai 3 colonnes dans le tableau de données ; ID de pièce, étape, valeur.Il existe de nombreuses parties différentes et chacune comporte plusieurs centaines d’étapes.Je souhaite obtenir les deux passages à zéro, comme ci-dessus, pour chaque ID de pièce unique dans le tableau.Vous ne savez pas quelle est la meilleure approche pour obtenir un ID de pièce unique et l'insérer dans le script ci-dessus pour obtenir les deux valeurs nécessaires pour chaque ID de pièce ?
Re : Extraire des données d'un graphique/tableau de donnéesMerci Jim!
C'est exactement ce dont j'avais besoin et cela fonctionne comme vous l'avez décrit dans votre message.Je travaille maintenant à incorporer les données collectées dans des scripts d'analyse plus approfondis.
Merci encore.
Re : Extraire des données d'un graphique/tableau de donnéesJe pense que la façon dont vous devez aborder cela est de parcourir les données, puis de trouver la première et la deuxième fois où les données franchissent zéro.Lorsque les données dépassent 0, recherchez laquelle des valeurs est la plus proche de zéro, puis enregistrez la valeur et la ligne.Répétez ensuite pour la deuxième occurrence, puis arrêtez de lire.Sélectionnez enfin les lignes trouvées.Voici un script simple qui fait exactement ce que j'ai décrit ci-dessus :
Noms par défaut ici ( 1 ) ;
dt = Tableau de données actuel () ;
PremièreMin = . ;
SecondeMin = . ;
Pour ( je = 1 , je <= N lignes (dt) - 1 , je ++,
Si (( : oui >= 0 & : y[je + 1 ] <= 0 ) | ( : oui <= 0 & : y[je + 1 ] >= 0 ) ,
Si ( Abdos ( : oui ) < Abdos ( : y[je + 1 ] ) ,
min = : oui ;
minrow = je ;
,
min = : y[je + 1 ] ;
minrow = je + 1 ;
) ;
Si ( Est manquant (PremièreMin) ,
PremièreMin = min ;
Première rangée = minrow ;
,
SecondeMin = min ;
Deuxième rang = minrow ;
Casser () ;
) ;
) ;
choisi ( état de ligne (Première rangée)) = 1 ;
choisi ( état de ligne (Deuxième rang)) = 1 ;