Re : Comment calculer des valeurs relatives en fonction d'une position d'une valeur de base ?Valeur1_rel pourrait être une colonne de formule.
Je ne sais pas quelle serait la formule basée sur vos exemples de données.
Habituellement, je m'attendrais à ce que le relatif signifie Valeur1 - Param1 , ou alors Valeur1 - 0 , mais aucun ne correspond à l'exemple.
Comment calculer des valeurs relatives en fonction d'une position d'une valeur de base ?Bonjour tous le monde,
J'ai besoin de calculer la part en pourcentage des valeurs de la colonne Valeur1 en fonction de la position de la valeur sélectionnée dans la colonne Valeur1 . Par exemple, si je veux le faire en fonction de la deuxième valeur de la colonne Valeur1 (position 2, ou valeur 2), la colonne résultante Valeur1_rel avec des valeurs relatives devrait ressembler à ceci :

De plus, il peut y avoir plus de données qui doivent être regroupées par élément, puis pour chaque élément, la part en pourcentage calculée (peut-être que la valeur normalisée ou relative est un terme un peu déroutant) pour toutes les autres valeurs. Comment puis je faire ça? Si l'explication n'est pas assez bonne, veuillez pardonner et n'hésitez pas à demander.
Merci et meilleures salutations
Tableau de donnéesScriptRe : Comment calculer des valeurs relatives en fonction d'une position d'une valeur de base ?Merci pour le commentaire. Oui, il y avait zéro dans le tableau dans la version précédente du message mais j'ai pensé que cela pourrait être un peu déroutant alors j'ai pensé qu'il serait peut-être plus simple de demander le calcul des valeurs souhaitées en prenant la valeur de la deuxième ligne de chaque groupe d'éléments . Et oui, le "zéro" de la colonne Param1 ne devait déterminer que le numéro de ligne.Re : Comment calculer des valeurs relatives en fonction d'une position d'une valeur de base ?Salut,
Vous pouvez utiliser cette formule certes complexe (peut-être que quelqu'un en présentera une plus simple) dans une nouvelle colonne :
Eval(
Eval Expr(
:Val[(:Group << get data table) << get rows where(
Col Cumulative Sum( 1, :Group ) == 2 & :Group == Expr( :Group[Row()] )
)] / :Val
)
)
Cela vaut probablement la peine de le déballer au moins un peu.
La construction Eval( Eval Expr( )) est utilisée pour forcer l'évaluation de l'expression Expr ( :Group[Row()] ). Sans cela, plusieurs valeurs seront renvoyées sur chaque ligne... une pour chaque groupe. Essayez-le en supprimant le wrapper Eval ( Eval Expr ()) et le wrapper Expr() pour voir ce que je veux dire.
Pour déterminer la valeur que nous utiliserons dans le rapport, nous devons saisir la 2e ligne du groupe actuel. Pour trouver cette ligne, nous devons faire correspondre le groupe (la deuxième partie de la clause get rows where) et devons également correspondre en tant que 2e valeur au sein du groupe. Un moyen simple de le faire est de regarder la somme cumulée d'une colonne de 1, regroupée par :Group. Lorsque cette colonne == 2, nous avons la 2ème valeur d'un groupe. Cela se produit sur plusieurs lignes, mais la 2ème partie de la clause restreint le résultat au groupe correspondant au groupe de la ligne actuelle. De cette façon, le tableau n'a même pas besoin d'être trié par groupe ou valeur.
Changer le 2 dans l'équivalence de la somme cumulée en k, vous permet d'utiliser la kième valeur du groupe au lieu de la 2e.
Acclamations,
Brady
