Fonction Col (Somme) en sélectionnant des lignes spécifiques<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Bonjour,
Je voudrais créer une colonne qui calcule une autre colonne moyenne ou somme mais je voudrais spécifier la fonction par :
Disons que si nous sélectionnons l'année, le calcul doit être effectué par "Année" ou,
Disons col (somme) de NetRevenueWithoutVat par année ou "NetRevenueWithoutVat" par "Month (Stay Date)" ou
Fonctions Col (Somme) de numéros de ligne spécifiques...
Quelqu'un pourrait-il partager ses connaissances comment le faire dans un script ou en saisissant la fonction Col(Sum) sous forme de formule dans une colonne ?
La logique derrière tout ça ?
Un grand merci d'avance

Re : Fonction Col (Somme) en sélectionnant des lignes spécifiquesVous devrez créer une colonne distincte contenant une colonne de regroupement pour chaque plage de dates que vous souhaitez utiliser, ou vous voudrez peut-être utiliser quelque chose comme :
Col Sum(
If(
:Event Date >= Informat( "02/01/2001", "mm/dd/yyyy" ) & :Event Date <=
Informat( "02/28/2001", "mm/dd/yyyy" ),
:Total Fatal Injuries,
0
)
)
Re : Fonction Col (Somme) en sélectionnant des lignes spécifiquesPeu importe, j'ai compris !
Col Somme(
:Montant du règlement,
:Date >= 01Août2018 & :Date <= 07Août2018,
:Numéro de carte
)Re : Fonction Col (Somme) en sélectionnant des lignes spécifiquesAlors pardonnez-moi, mais je suis un nouvel utilisateur de JMP. J'utilise uniquement l'éditeur de formule, pas JSL. Je ne sais pas si ce que vous me donnez est pour JSL ou l'éditeur de forumula. Ne suis-je pas capable de mettre les conditions dans la formule comme celle-ci?
Col Somme (: Montant du règlement , :Date >= 8 / 1 / 2018 & :Date <= 8 / 7 / 2018 ,:Numéro de carte )
Sauf que le problème que je rencontre est que JMP le corrige automatiquement pour qu'il s'agisse d'une division, pas d'une formule de date.
Re : Fonction Col (Somme) en sélectionnant des lignes spécifiques@Mitch103 ,
Essayez quelque chose comme ça comme suggéré par @SP :
dt = Current Data Table();
dt << Select Where(:Date > StartDate & :Date <ENDDATE></ENDDATE>
Re : Fonction Col (Somme) en sélectionnant des lignes spécifiquesÊtes-vous capable d'utiliser cette formule et de définir la logique d'une colonne particulière ? Par exemple, j'essaie de faire la somme des montants en dollars pour chaque enregistrement entre deux dates. La formule ressemblerait donc à ceci :
Col Somme ( :montant en dollars, :date)
Mais je ne sais pas comment définir la plage de dates.
Re : Fonction Col (Somme) en sélectionnant des lignes spécifiquesQuand j'utilise
Col Sum( :ColumnName, Selected() )
J'obtiens l'erreur suivante :
Row number not set or in range in access or evaluation of 'Selected' , Selected/*###*/()
Quelqu'un pourrait-il me dire ce qui pourrait se passer ?
Re : Fonction Col (Somme) en sélectionnant des lignes spécifiquesVotre exemple de code :
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << select Where(:age ==12);
n = Col Sum(:age,Selected());
La fonction Col Sum() fonctionne différemment dans le code ouvert et dans une formule. Lors du traitement des données, en code ouvert, si le deuxième élément est présent, JMP ne peut pas exécuter l'instruction puisque la valeur résultante va renvoyer plus d'une valeur. Autrement dit, la valeur renvoyée dans votre exemple nécessiterait que la variable "n" ait 2 valeurs. Le Col Sum() pour les lignes sélectionnées et le Col Sum() pour les lignes non sélectionnées. Je suppose que JMP pourrait renvoyer une liste de valeurs, mais comme @SP indiqué que la fonction Summarize() est utilisée pour cela. Par conséquent, la raison pour laquelle le deuxième élément de la fonction Col Sum() n'est pas valide en code ouvert.
Re : Fonction Col (Somme) en sélectionnant des lignes spécifiques@txnelson :
Merci . Bien que je connaisse cette approche - ce qui m'a surpris, c'est la façon @SP résolvait le même problème.
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << New Column("Conditional sum", Formula(Col Sum(:age, Selected()))); // This Works
dt << select Where(:age == 12);
n = Col Sum(:age,Selected()); // This yields an error Bien que je comprenne que la ligne 4 peut être facilement remplacée par votre solution, c'est-à-dire et c'est ma solution goto,
n = Sum(:age[dt << Get Selected Rows]);
Je ne comprends pas pourquoi cette ligne de code entraîne une erreur dans mon cas.
n = Col Sum(:age,Selected());
La documentation ne montre pas que cette fonctionnalité existe (au moins dans JPM 12) - donc j'étais vraiment excité par cette nouvelle astuce mais cela semblait fonctionner dans le cas @SP Résolu la question plus tôt. L'un de vous peut-il expliquer pourquoi exactement le même code fonctionne dans une formule de colonne mais génère une erreur à l'extérieur ?
Uday
Re : Fonction Col (Somme) en sélectionnant des lignes spécifiquesLes fonctions Col Stat() sont principalement utiles dans les formules de colonne, et avec des arguments de regroupement facultatifs, elles ne fonctionnent pas du tout en tant que fonctions autonomes (utilisez alors Summarize() à la place).
Mon ancien message visait à montrer comment mettre à jour une colonne dynamiquement simplement en sélectionnant des lignes à la main (ou par script). Plus une astuce que quelque chose de très utile...
Exemple:
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << New Column("Conditional sum", Formula(Col Sum(:age, Selected())));
dt << select Where(:age == 12);
// Or select rows by hand and see how numbers change dynamically
Re : Fonction Col (Somme) en sélectionnant des lignes spécifiquesCe que vous voulez faire est d'utiliser la possibilité de référencer des valeurs dans une table de données en tant que vecteur de données et de lui transmettre la matrice des lignes sélectionnées
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << select Where(:age == 12);
n = Sum(:age[dt << Get Selected rows]);Re : Fonction Col (Somme) en sélectionnant des lignes spécifiques@ian_jmp / @SP / @txnelson - Des pensées ?
Re : Fonction Col (Somme) en sélectionnant des lignes spécifiques
Cette solution ne fonctionne-t-elle que dans des versions spécifiques de JMP ?
Parce que j'utilise JMP 12 et que je continue à rencontrer cette erreur
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << select Where(:age ==12);
n = Col Sum(:age,Selected());
Voici mon journal
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << select Where( :age == 12 );
n = Col Sum( :age, Selected/*###*/() );
Numéro de ligne non défini ou dans la plage lors de l'accès ou de l'évaluation de 'Selected' , Selected/*###*/()
Re : Fonction Col (Somme) en sélectionnant des lignes spécifiquesOui, plusieurs variables de regroupement sont prises en charge.
Re : Fonction Col (Somme) en sélectionnant des lignes spécifiquesMerci!
C'est ce que je cherchais.
Cela signifie-t-il que je pourrais aller plus loin et disons Col Somme ( : Revenu net sans TVA , : Année, :Agence ) ?
Re : Fonction Col (Somme) en sélectionnant des lignes spécifiquesUtilisez ColSum() dans les formules de colonne. La formule Col Somme ( : Revenu net sans TVA , : Année ) renverra la somme (pas la somme cumulée) groupée par Année .
Essayez cette formule pour un ColSum() qui change dynamiquement avec la sélection de lignes :
Col Somme ( : Revenu net sans TVA , Choisi () )
Re : Fonction Col (Somme) en sélectionnant des lignes spécifiquesLa réponse peut dépendre de ce qui se passe ensuite. Vous pouvez certainement faire :
NamesDefaultToHere(1);
// (1) Get some data
dt1 = Open("$SAMPLE_DATA/Big Class.jmp");
// (2) Get summary info into a list and a vector
Summarize(groups = By(:sex), groupMeans = Mean(:height));
// (3) Make a table using the summary info
dt2 = NewTable("Height by Gender",
NewColumn("Gender", Character, Nominal, Values(groups)),
NewColumn("Mean Height", Numeric, Continuos, Values(groupMeans))
);
(voir le Guide de script JSL pour plus d'options avec Summarise).
Si vous avez besoin de l'étape 3, vous feriez peut-être mieux d'utiliser soit 'Tables > Summary' ou 'Analyse > Tabulate'.
Vous pouvez également agréger n'importe quel ensemble de lignes, tant que vous pouvez exprimer ce qu'est cette sélection.