La commande Get Rows Where ne fonctionne que sur une colonne spécifiqueBonjour,
J'utilise la commande "obtenir des lignes où" pour remplacer les valeurs numériques par "P" ou "N" selon qu'elles atteignent une valeur seuil.
Voici le code:
dt = Open ("C: \ test_data.jmp");
Thresh = 12; // l'utilisateur définit cette valeur de seuil
Try (dt: HOOK [dt << obtenir des lignes où (: Hook> = thresh)] = "P");
Try (dt: HOOK [dt << récupère des lignes où (: Hook == "")] = "N");
Donc, cela fonctionne bien et remplit la colonne avec N et P. Si je copie et colle ces deux lignes d’essai et que je change la désignation de la colonne, cela ne fonctionnera pas pour les autres colonnes. Si je modifie l'ordre des commandes ou des colonnes, la colonne Crochet reste active.
Qu'est-ce que je rate?
Merci!
K
Re: Obtenir les lignes où la commande ne fonctionne que sur une colonne spécifiqueComme les colonnes sont numériques, la comparaison
Try( dt:HOOK[dt << get rows where( :Hook == "" )] = "N" );
ne fonctionnera pas. Vous devriez utiliser est manquant à la place:
Try( dt:HOOK[dt << get rows where( is missing(:Hook))] = "N" );
Mais comme d’autres l’ont dit, l’affectation à "N" ne fonctionnera pas car la colonne est numérique.
Re: Obtenir les lignes où la commande ne fonctionne que sur une colonne spécifiqueOui ..... cela le fera, cependant, ce n’est pas une bonne pratique logicielle. Je suggérerais que plutôt que de définir des valeurs sur "P" ou "N", que vous changiez les valeurs en d'autres valeurs numériques et que vous utilisiez la propriété de colonne, Etiquettes de valeur pour changer les valeurs numériques que vous avez spécifiées, pour être affichées comme " P "ou" N ". De cette façon, vous pouvez continuer à comparer correctement les valeurs numériques comme vous le faites avec la valeur "Thresh", mais l'affichage vous donne ce que vous voulez.
Re: Obtenir les lignes où la commande ne fonctionne que sur une colonne spécifiqueje pense que @txnelson est juste.
Supprimez Try () de vos tentatives pour que vous puissiez voir les erreurs dans le journal.
Voici un exemple d'erreur que vous recevrez en essayant d'affecter une valeur de caractère à une colonne numérique.
//:*/
dt=open("$SAMPLE_DATA\Big Class.jmp");
thresh=65;
dt:height[dt << get rows where( :height >= thresh )] = "P";
/*:
Column "height" requires numeric values in access or evaluation of 'Bad Argument'
Re: Obtenir les lignes où la commande ne fonctionne que sur une colonne spécifiqueN’essayez pas d’être contraire, mais lorsque cela fonctionne pour cette clé, il convertit automatiquement la colonne en caractère lors de l’insertion des P et des N.
Re: Obtenir les lignes où la commande ne fonctionne que sur une colonne spécifiqueSi vos colonnes sont numériques et continues, le réglage des valeurs sur "P" ou "N" ne fonctionnera pas. Vous pouvez définir les cellules égales à une valeur numérique, mais pas à une valeur de caractère.
Re: Obtenir les lignes où la commande ne fonctionne que sur une colonne spécifiqueEn fait, j'ai également envisagé de prendre cela en compte (mon dépannage n'est pas trop médiocre pour un débutant), mais lorsque je regarde les informations sur les colonnes, les trois colonnes sont définies comme "Numérique" et "Continu".
Re: Obtenir les lignes où la commande ne fonctionne que sur une colonne spécifiqueIl y a un problème avec vos colonnes étant soit numérique ou caractère. Toutes les cellules d'une colonne doivent être en caractères ou numériques. Dans votre code, vous demandez à la colonne Hook d'être comparée à la valeur numérique "Thresh". "Thresh" a une valeur numérique de 12. Vous souhaitez ensuite définir la valeur de Hook sur un caractère "P" ou "N".
Les colonnes Hook, Rounds et Whip sont-elles numériques ou en caractères?
Re: Obtenir les lignes où la commande ne fonctionne que sur une colonne spécifiqueJe voudrais que ce soit aussi simple que cela. Le code supplémentaire est ci-dessous. Y a-t-il une sorte d'opérateur de fichier qui me manque - comme vous devez fermer ou enregistrer après chaque substitution de colonne?
Noms par défaut jusqu'ici ( 1 )
dt = Ouvrir ( "C: \ test_data.jmp" )
Thresh = 12 ; // L'utilisateur définit cette valeur de seuil (définit les lignes dans la sortie)
Essayer (dt: HOOK [dt << obtenir des rangées où (: Crochet> = Thresh)] = "P" )
Essayer (dt: HOOK [dt << obtenir des rangées où (: Crochet == "" )] = "N" )
Essayer (dt: ROUNDS [dt << obtenir des rangées où (: Rounds> = thresh)] = "P" )
Essayer (dt: ROUNDS [dt << obtenir des rangées où (: Tours == "" )] = "N" )
Essayer (dt: WHIP [dt << obtenir des rangées où (: Whip> = thresh)] = "P" )
Essayer (dt: WHIP [dt << obtenir des rangées où (: Fouet == "" )] = "N" )
Re: Obtenir les lignes où la commande ne fonctionne que sur une colonne spécifiquePouvez-vous nous montrer les lignes après avoir coupé et collé et modifié la valeur Crochet?
Je suppose que vous ne modifiez pas l’un des deux emplacements des deux colonnes où Crochet apparaît.