Col Sum fait référence à la mauvaise table de donnéesJ'ai deux tables de données ouvertes dans mon script, disons dt1 et dt2, et elles ont été ouvertes dans cet ordre. dt1 a une colonne avec une variable d'état, où rien autre que "1" représente un type de valeur aberrante. Je veux compter le nombre de valeurs aberrantes dans dt1. C'est ce que j'ai ...
n_out = Col Sum(If( dt1:STATUS == "1", 0, 1));
Cependant, cela ne semble pas fonctionner. Il semble que le code sur tente de faire référence à dt2 tel qu’il a été ouvert plus récemment. Si je clique sur dt1 pour afficher la fenêtre au premier plan, puis que je lance à nouveau le code, cela fonctionne. Pourquoi ma référence à dt1: STATUS ne fonctionne-t-elle pas?
Merci de votre aide.
Re: Col Sum fait référence à la mauvaise table de donnéesCe code produit également la valeur correcte de 9:
Names Default to Here( 1 );
dt1 = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt2 = Open( "$SAMPLE_DATA/Fitness.jmp" );
dt1 << New Column( "Outlier", Formula( :height > 65 ) );
n outliers = Col Sum( dt1:Outlier );
Ici, j'ai utilisé une autre colonne de données avec une formule qui utilise l'expression pour tester une valeur aberrante. Ce résultat me dit que Col Sum () peut ne pas être conçu pour fonctionner avec une expression, mais spécifiquement avec une colonne de données. (Indice, indice: COL SUM ().) Je ne sais pas d'où vient la valeur 4 lorsque vous utilisez l'expression du test des valeurs aberrantes au lieu d'une référence de colonne de données.
Re: Col Sum fait référence à la mauvaise table de donnéesPourquoi pas?
Re: Col Sum fait référence à la mauvaise table de donnéesD'accord... D'accord.... Ce qui suit produit le compte à 9.
Noms par défaut ici (1);
dt1 = Open ("$ SAMPLE_DATA / Big Class.jmp");
dt2 = Open ("$ SAMPLE_DATA / Fitness.jmp");
n ht over 60 = Sum ((dt1: height << Obtenir comme matrice)> 65);
Cela signifie-t-il que la conversion en matrice est une solution?
Re: Col Sum fait référence à la mauvaise table de donnéesMême problème... Est-ce que mon code:
Noms par défaut ici (1);
dt1 = Open ("$ SAMPLE_DATA / Big Class.jmp");
dt2 = Open ("$ SAMPLE_DATA / Fitness.jmp");
num_tall = Col Sum (dt1: hauteur> 65);
show (num_tall);
produire num_tall = 9 sur votre système?
J'utilise JMP 13 si cela a quelque chose à voir avec cela.
Re: Col Sum fait référence à la mauvaise table de donnéesMa question stupide du jour: que se passera-t-il si vous quittez JMP et redémarrez-le?
Re: Col Sum fait référence à la mauvaise table de donnéesBonne idée... J'ai donc exécuté le code suivant:
Noms par défaut ici (1);
dt1 = Open ("$ SAMPLE_DATA / Big Class.jmp");
dt2 = Open ("$ SAMPLE_DATA / Fitness.jmp");
num_tall = Col Sum (dt1: hauteur> 65);
show (num_tall);
Ceci est la sortie:
Noms par défaut ici (1);
dt1 = Open ("$ SAMPLE_DATA / Big Class.jmp");
dt2 = Open ("$ SAMPLE_DATA / Fitness.jmp");
num_tall = Col Sum (dt1: hauteur> 65);
show (num_tall);
/ *:
num_tall = 4;
Ensuite, lorsque je clique sur la table Big Class (en la mettant au premier plan), je reçois:
num_tall = Col Sum (dt1: hauteur> 65);
show (num_tall);
/ *:
num_tall = 9;
Quelle est la bonne réponse.
Y at-il un problème avec mes paramètres ou s’agit-il de la façon dont JSL est conçu?
Re: Col Sum fait référence à la mauvaise table de donnéesVous pouvez aussi essayer ce code à la place:
Names Default to Here( 1 );
dt1 = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt2 = Open( "$SAMPLE_DATA/Fitness.jmp" );
n ht over 60 = Sum( (Column( dt1, 4 ) << Get As Matrix) > 60 );
Re: Col Sum fait référence à la mauvaise table de donnéesPourquoi ne pas vous éloigner du problème initial et essayer quelque chose de plus simple. Par exemple, avec des valeurs différentes dans chaque table de données, essayez de référencer un seul emplacement pour voir quelle valeur est renvoyée. Par exemple,
Names Default to Here( 1 );
dt1 = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt2 = Open( "$SAMPLE_DATA/Fitness.jmp" );
value = Column( dt1, 4 )[2]; // second row of :height in Big Class?
Show( value );
Cela semble fonctionner.
Re: Col Sum fait référence à la mauvaise table de donnéesMerci d'avoir répondu.
J'ai le même problème.
Je sais que la réponse pour un exemple particulier est n_out = 3. Sur mon écran, je vois dt1 en arrière-plan lors de son ouverture, puis dt2 par-dessus. Lorsque je lance cette ligne de code, je reçois n_out = 0. Mais si je clique sur la table dt1 (en l'amenant au premier plan de mon écran), puis que je lance à nouveau le code, je reçois n_out = 3.
C'est pourquoi je pense que le problème est de faire référence au mauvais tableau.
Re: Col Sum fait référence à la mauvaise table de donnéesJ'ai aussi essayé ce qui suit:
n_out = Col Sum (NOT (dt1: STATUS == "1"))
et ça ne marche toujours pas.
Je sais que la réponse pour un exemple particulier est 3. Sur mon écran, je vois dt1 en arrière-plan lors de son ouverture, puis dt2 par-dessus. Lorsque je lance cette ligne de code, je reçois n_out = 0. Mais si je clique sur la table dt1 (en l'amenant au premier plan de mon écran), puis que je lance à nouveau le code, je reçois n_out = 3.
C'est pourquoi je pense que le problème est de faire référence au mauvais tableau.
Re: Col Sum fait référence à la mauvaise table de donnéesessayez ce formulaire et voyez si cela fonctionne
n_out = Col Sum( dt1:STATUS != "1");
Re: Col Sum fait référence à la mauvaise table de donnéesD'après votre description, il semble que cela ne devrait absolument pas se produire. Je ne vois aucun problème dans votre code. Ce serait peut-être le bon moment pour appeler le support technique JMP.