Fonctions col et états de ligneSelon les notes de publication de la version 15 de JMP :
Les fonctions Col honorent les lignes exclues via la fonction Excluded(Row State()).
Col Maximum( :height, :sex, Exclus( Row State() ) );
Cependant, cette syntaxe ne semble pas fonctionner.Quelqu'un peut-il suggérer la syntaxe correcte?
Fusion et nettoyage des donnéesConception d'expériencesRe : Fonctions Col et états de ligneJe pense que c'est le même concept que celui derrière le binning. Vous mappez une valeur à une autre pour chaque observation, dans ce cas, une valeur de groupe. C'est peut-être une poubelle. Il pourrait s'agir d'une mesure de tendance centrale.
Re : Fonctions Col et états de ligneD'accord merci.Je n'arrive pas vraiment à comprendre l'idée de générer une statistique de colonne pour chaque ligne du tableau, mais je suppose qu'il doit y avoir des cas d'utilisation.Je m'en tiendrai à l'utilisation d'une fonction définie par l'utilisateur pour calculer les statistiques de colonne tout en tenant compte des exclusions de lignes.
Re : Fonctions Col et états de ligneSelon le Documentation , lorsqu'une variable By est spécifiée, la fonction doit être utilisée dans une formule de colonne ou For Each Row() :
(Facultatif) Une variable By à calculer statistique s sur des groupes de lignes. Utilisez la variable By dans un col umn formule ou dans un Pour chaque ligne() fonction.
En examinant certains des exemples précédents dans cet article, je conviens qu'il semble traiter les valeurs exclues comme leur propre niveau By.
Re : Fonctions Col et états de ligneIl semble qu'il soit utilisé avec une formule de colonne dans laquelle la fonction Row() est définie lors de son évaluation.
Re : Fonctions Col et états de ligneSur un seul ordinateur, cela fonctionne :

Et sur l'autre ça échoue :

Re : Fonctions Col et états de ligneTravailler avec Big Class (bien sûr):
colmaximum(:height,excluded(rowstate()))
Cela fonctionne.Mais sur un ordinateur mais pas sur un autre.Les deux exécutant 15.1.0.
Maintenant, je suis totalement confus!
Captures d'écran sur le prochain post...
Re : Fonctions Col et états de ligneIntéressant. Une version préliminaire de JMP 16 semble faire les choses correctement pour r=1 et r=2, mais pas par la suite :
NamesDefaultToHere(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
mw = J(NRow(dt), 2, .);
for(r=1, r<=NRow(dt), r++,
Row() = r;
RowState(Row()) = ExcludedState(1);
mw[r,1] = ColMean(:weight, Excluded(RowState(Row())));
mw[r,2] = ColMean(:weight, Excluded());
RowState(Row()) = ExcludedState(0);
);
AsTable(mw);
dt << Distribution(
Continuous Distribution(
Column( :weight ),
Quantiles( 0 ),
Histogram( 0 ),
Outlier Box Plot( 0 )
),
Local Data Filter(
Add Filter(
columns( Transform Column( "Row", Nominal, Formula( Row() ) ) ),
Where( Transform Column( "Row", Nominal, Formula( Row() ) ) == 1 ),
Display(
Transform Column( "Row", Nominal, Formula( Row() ) ),
N Items( 15 ),
Find( Set Text( "" ) )
)
)
)
);Re : Fonctions Col et états de ligneDavid,
Très perturbant. Je pense que c'est une question pour notre amie Wendy.Re : Fonctions Col et états de ligneJe peux coder une solution - ma question était spécifiquement de savoir si la version 15 permettait de le faire uniquement en utilisant les fonctions de colonne - c'est l'impression que j'ai eue des notes de version.
Re : Fonctions Col et états de lignePeut-être que le respect signifie dans ce cas que l'exclu est juste un byVar supplémentaire dans les formules de statistiques de colonne ?
Si vous voulez la valeur maximale de la colonne sans valeurs exclues, pourriez-vous utiliser Summarize au lieu de Col Maximum ? Il semble ignorer les lignes exclues.
Names Default To Here(1);
dt =New Table("ExcludeColMax",
Add Rows(6),
Compress File When Saved(1),
New Column("A",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([1, 10, 100, 2, 20, 200]),
Set Display Width(46)
),
New Column("B",
Character,
"Nominal",
Set Values({"A", "A", "A", "B", "B", "B"})
),
New Column("C",
Numeric,
"Continuous",
Format("Best", 12),
Formula(Col Maximum(:A, :B, Excluded())),
Set Display Width(65)
),
Set Row States([0, 0, 6, 6, 0, 6])
);
Write("Looping col max:");
For Each Row(
Show(Col Maximum(:A, :B, Excluded()))
);
Write("\!N\!NOnly col max:");
Show(Col Maximum(:A, :B, Excluded()));
Write("\!N\!NSummarize:");
Summarize(dt, exg = By(:B), exm = Max(:A));
Show(Eval List({exg, exm}));
Show(Max(exm));Re : Fonctions Col et états de ligneJ'ai testé avec la v15.2 et le problème est le même.Notez que le cas d'utilisation utilise la fonction dans un script, pas dans une formule de colonne (je ne sais pas pourquoi je voudrais une statistique de colonne dans une ligne).
Re : Fonctions Col et états de ligneJ'ajouterai cet exemple très simple ici si quelqu'un d'autre vient:

Names Default To Here(1);
New Table("ExcludeColMax",
Add Rows(6),
Compress File When Saved(1),
New Column("A",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([1, 10, 100, 2, 20, 200]),
Set Display Width(46)
),
New Column("B",
Character,
"Nominal",
Set Values({"A", "A", "A", "B", "B", "B"})
),
New Column("C",
Numeric,
"Continuous",
Format("Best", 12),
Formula(Col Maximum(:A, :B, Excluded())),
Set Display Width(65)
),
Set Row States([0, 0, 6, 6, 6, 0])
);Re : Fonctions Col et états de ligneMerci de me le faire savoir.Cela ne fonctionne pas avec 15.1 - je vais essayer de faire une comparaison avec 15.2.
Re : Fonctions Col et états de ligneJ'ai rapidement testé et j'ai semblé que l'utilisation de Exclus() semblait fonctionner (j'utilise 15.2.1).
Re : Fonctions de colonne et états de ligneEn ajoutant à cette discussion, je considérerais que le comportement des fonctions Col est étrange et différent de ce qui est typique dans JMP et donc inattendu et déroutant.
Les fonctions Col ignorent l'exclusion des lignes et le filtrage, à la fois local et global.
Cela signifie que le filtrage local dans une sortie d'analyse est ignoré avec les fonctions col et qu'il n'est pas possible d'obtenir des résultats avec le filtrage ou par sous-groupes ou que les résultats obtenus sont incorrects.
La possibilité d'exclure certaines lignes à l'aide d'une formule reste encore très limitée.
Je vois cela comme un problème avec JMP car cela pourrait potentiellement dérouter ou induire les utilisateurs en erreur. J'espère que l'équipe JMP résoudra ce problème pour que la fonctionnalité Col adhère à celle des autres fonctions.
Re : Fonctions de colonne et états de ligne@Oren_Barilan ,
Pour avoir une vue d'ensemble de votre préoccupation concernant les fonctions Col ne suivant pas les fonctionnalités exclues de JMP, plates-formes, il faudrait inclure beaucoup plus de fonctions que les seules fonctions Col.Une simple fonction SQRT() ou SUM() doit également être incluse dans votre argument, car si elles sont traitées pour les valeurs d'une ligne exclue, elles doivent également renvoyer une valeur nulle.Et si tel était le cas, comment gérer la situation dans laquelle vous ne souhaitez pas que les lignes soient ignorées ?
Donc, de mon point de vue, JMP adopte une approche plus fonctionnelle, permettant au programmeur de l'avoir là où il en a besoin.
Col Mean( :weight );
calcule la moyenne sur toutes les lignes de la table de données, tandis que
Col Mean( If( Excluded( Row State( Row() ) ), ., :weight ) )
calcule la Moyenne uniquement sur les lignes non exclues
Re : Fonctions de colonne et états de ligneJe suis d'accord avec Jim.
Il existe également une troisième option, dans laquelle vous gérez les exclus comme son propre "groupe" (je ne sais pas comment il est géré en réalité).
Col Mean(:weight, Excluded())

Mon seul "problème" avec les fonctions Col est qu'elles peuvent être dangereuses en raison de la façon dont elles gèrent les lignes exclues ET que vous pouvez les créer si facilement à partir du menu contextuel. Peut-être que ce risque pourrait être réduit si JMP incluait automatiquement Exclud() à ces formules (ou en faisait une préférence) ?