Comment changer une colonne de formule en une variable?J'utilise une première colonne de formule comme résultat intermédiaire, afin de recalculer la résultat concluant avec une deuxième colonne formelle. La deuxième colonne utilise le résultat de la première colonne de formule.
Existe-t-il un moyen simple d'éviter la première colonne de formule, en créant par exemple un varaibele? ma JSL Knolodge est très basique.
Merci d'avance.
Re: Comment changer une colonne de formule en une variable?Merci pour votre réponse.
Pourriez-vous me montrer comment combiner les fonction de ligne col quantile () avec la version de la matrice?
Re: Comment changer une colonne de formule en une variable?Comme vous l'avez dit, la formule If satement fonctionne très bien pour obtenir les valeurs NewDataCorr.
J'ai mis à jour votre fichier avec la nouvelle colonne: NewDataCorr 2. Dans cette colonne, votre formule d’instruction If a été utilisée. Au lieu d'utiliser les valeurs de la colonne DataTmp, je les ai exprimées avec la formule DataTmp:
Si (: P1 == 0 &: P2
,
: DataRaw
)
Dans ce cas, je me suis débarrassé de la colonne DataTmp. Quelle est votre opinion sur cette solution?
Re: Comment changer une colonne de formule en une variable?La solution de Cameron devrait être assez rapide, même sur 100 000 lignes.
Une autre chose, avec la fonction col quantile (), est évaluée pour chaque ligne de la formule de la table de données, ce qui ralentirait aussi un peu les choses. Dans la version matricielle, il n'est évalué qu'une fois.
Re: Comment changer une colonne de formule en une variable?J'ai téléchargé le fichier example.jmp. Ma question spécifique est, w Quelle est la meilleure façon d’éviter la création des colonnes: DataTmp et: FlyerTmp afin d’obtenir les colonnes: DataCorr à l’aide des colonnes: P1,: P2 et: DataRaw?
Selon les utilisateurs de JSL, il est préférable de calculer ces colonnes à l'aide de listes ou de martises, surtout si les ensembles de données sont volumineux.
Re: Comment changer une colonne de formule en une variable?Merci pour votre suggestion JSL. Je suis curieux de tester le script. Pour le moment, je ne suis pas en mesure de vérifier cela (pas d’accès à JMP).
Je me demande comment sont traités les points de données de l'origine Column DataRaw s'ils sont à 0?
Re: Comment changer une colonne de formule en une variable?Merci pour votre réponse.
Je souhaite supprimer les colonnes tmp afin de garder le jeu de données aussi simple que possible. Le fichier d'exemple est un fichier très basique concernant ma question. En pratique, le jeu de données contient environ 10 à 15 colonnes DataRaw différentes, que j'aime bien préparer de la même manière. Il y a aussi d'autres colonnes différentes ajoutées.
Vous avez raison pour la colonne FlyerTmp. Il peut être inclus dans la colonne DataCorr. Je vérifierai votre dossier ultérieurement (aucun accès à JMP pour le moment).
Re: Comment changer une colonne de formule en une variable?Je viens de penser à quelque chose. Vous devrez supprimer les zéros de temp avant de calculer le quantile, car ces zéros seront inclus. Vous pouvez le faire en exécutant ceci avant x98.
miss_rows = loc(as list(temp),0);
temp[miss_rows] = .;
Vous pouvez également faire de même pour "final" avant de créer la nouvelle colonne. Cela éliminerait la nécessité de remplacer les valeurs manquantes à la fin.
Re: Comment changer une colonne de formule en une variable?Merci d'avoir posté votre exemple de tableau de données.
Puisque vous voulez calculer des quantiles pour certaines lignes seulement, vous devez avoir une nouvelle colonne basée sur une formule. Comme vous le faites déjà avec dataTmp, c'est une excellente façon de continuer. Cependant, vous n'avez pas besoin de flyerTmp car tout ce que vous faites est une condition que vous utilisez ensuite dans dataCorr. Vous pouvez simplement mettre cette condition directement dans dataCorr.
Je l'ai fait dans la table de données attachée avec 100 100 lignes. C'est assez rapide.
Je suis curieux de savoir pourquoi vous vouliez vous débarrasser de la colonne intermédiaire? Curiosité intellectuelle ou autre préoccupation?
Re: Comment changer une colonne de formule en une variable?Essayez quelque chose comme ça. L'idée est de multiplier les données élément par élément avec des vecteurs de valeurs booléennes, qui sont vos conditions logiques. Cela devrait être assez rapide, mais j’avoue que je suis loin d’être un expert en informatique.
dt = Current Data Table();
//Get values for other columns
raw = dt:DataRaw << Get Values;
P1vals = dt:P1 << Get Values;
P2vals = dt:P2 << Get Values;
//Compute equivalent of DataTmp
temp = (P1vals == 0 & P2vals < 3):*raw;
//Compute 98th percentile of temp
x98 = quantile(0.98, temp);
//Compute final column
final = (temp <= x98):*temp;
dt << New Column("DataCorr", << Set Values(final));Le résultat aura 0 au lieu de manquer. Vous pouvez les remplacer par des valeurs manquantes par quelque chose comme ceci (cependant, si vous avez toujours le DataCorr d'origine dans votre table, le script précédent produira une colonne "DataCorr 2" et cette ligne de code ne fonctionnera pas dans la colonne de droite).
//Replace 0s with missing
dt:DataCorr[dt << Get Rows Where(:DataCorr == 0)] = .;
Re: Comment changer une colonne de formule en une variable?salut Cameron ,
joint le fichier example.jmp. Quel est le meilleur moyen d'éviter la création des colonnes: DataTmp et: FlyerTmp afin d'obtenir les colonnes: DataCorr à l'aide des colonnes: P1,: P2 et: DataRaw?
Cela devrait être applicable aux ensembles de données contenant plus de 100 000 lignes.
Thomas
Re: Comment changer une colonne de formule en une variable?Je vérifie quelques détails:
1. la valeur est-elle la même pour toutes les lignes de la première colonne?
2 Est-ce que vous écrivez l’addition de colonnes?
Ce qui pourrait être possible, c’est que le premier résultat soit calculé en mémoire, sous la forme d’une colonne unique dans une matrice, puis, si vous voulez ces valeurs, extrayez-les simplement de la matrice et créez une nouvelle colonne avec ces valeurs. Souvent, cela est plus rapide que d’ajouter une colonne et de la mettre à jour dans la table (pour les tables très hautes).
- Mieux encore, effectuez les deux calculs dans une matrice (en mémoire, pas dans la table), puis affichez les résultats dans la table.
-Si toutes les valeurs sont identiques dans la colonne 1, alors peut-être simplement calculer ceci dans un script et l'ajouter à la table de données en tant que table
variable et référence la variable dans la colonne 2.
beaucoup de bonnes options, mais elles dépendent toutes de ce que vous essayez de faire.
Re: Comment changer une colonne de formule en une variable?Vous devrez poster un exemple de travail si vous souhaitez une aide plus précise.
Re: Comment changer une colonne de formule en une variable?Merci pour la solution. Ça marche. Cependant, cela peut ralentir le calcul si certains états sont utilisés dans la formule.
Re: Comment changer une colonne de formule en une variable?Pouvez-vous simplement copier la formule de la première colonne et la coller dans la formule de la deuxième colonne partout où la première colonne est référencée?