Obtenir les lignes qui satisfont une condition dans une formule de colonneTout,
Probablement une question facile - mais vous cherchez de l'aide à ce sujet. Existe-t-il un moyen d'obtenir des lignes qui correspondent à une condition dans une formule de colonne ?
Dans l'exemple ci-dessous, on devrait pouvoir obtenir la somme groupée d'un groupe donné. Si je voulais ajouter une condition en plus de cela, disons on :height should be > 60 , comment puis-je y parvenir.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column("CondSum",Numeric,Continuous,Formula(Col Sum(:weight,:age)));En dehors d'une formule de colonne, je pense que c'est facile et que cela peut être réalisé. Cependant, je voudrais mettre en œuvre cela via une formule de colonne, si possible.
Re : Obtenir des lignes qui satisfont une condition dans une formule de colonneLa formule semble n'être évaluée que lorsque la colonne Age change.Cependant, la formule ci-dessous semble vous donner ce que vous voulez
myheight = :height;
myage = :age;
Sum( :weight[Current Data Table() << get rows where( :age == myage & :height >= myheight )] );
Re : Obtenir des lignes qui satisfont une condition dans une formule de colonneDonc je suppose que ça a quelque chose à voir avec
Le résultat est mis en cache en interne afin que plusieurs évaluations soient efficaces
Je ne peux pas dire avec certitude cependant.Si vous utilisez simplement une colonne intermédiaire, cela semble fonctionner correctement.
Names default to here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New COlumn("Conditional", Formula(
myheight = :height;
:height >= myheight; // should always be 1
//:height >= .5*weight // this might be a better example
));
dt << New Column("CondSum",Numeric,Continuous,Formula(
Col Sum( :weight, :age, :Conditional );
));Re : Obtenir des lignes qui satisfont une condition dans une formule de colonneSalut, mettre une comparaison comme argument byVar est une bonne idée:
Col Sum( :weight, :age, :height >= 60 )
Je suis intéressé à mettre une comparaison dans l'argument byVar qui le compare à la ligne actuelle :
myheight = :height;
Col Sum( :weight, :age, :height >= myheight )
Cela ne fonctionne pas comme prévu : le calcul montre un ensemble de nombres confus, puis ils passent tous à "1" si je change la taille de quelqu'un.
Y a-t-il un moyen de faire cela?
(Juste pour un meilleur cadre de référence, dans ma table actuelle, j'essaie de compter les lignes où la date dans colA est supérieure à la datevalue dans colA et où la date dans colB est inférieure à la datevalue dans colB.)
Re : Obtenir des lignes qui satisfont une condition dans une formule de colonneSalut Uday,
Vous pouvez en fait simplement taper la condition comme argument suivant.
Col Sum( :weight, :age, :height > 60 )
Cela peut ne pas sembler correct au premier abord dans cet exemple de grande classe, car la somme est la même pour les enfants de 12 ans en dessous et au-dessus de 60 pouces.Il se trouve que ce sont les mêmes sommes.