Comment puis-je définir une valeur de cellule sur "manquante" via un script ?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />J'ai un script que j'utilise pour supprimer des points de données familiaux de grands ensembles de données numériques.Lorsqu'une valeur était trouvée en dehors d'une distribution définie, cette valeur était définie comme manquante à l'aide du code "columnReference[specificCell] = ."
Avant, je travaillais très bien, mais maintenant, il semble que le script n'aime pas que je définisse la valeur de la cellule sur "." Des suggestions sur la façon dont je peux définir une valeur de cellule sur "manquante" ?
Re : Comment puis-je définir une valeur de cellule sur "manquante" via un script ?Je déduis de ce fil que vous aimeriez effectuer de telles opérations par programmation. Il est difficile de donner des directives générales car il y a tellement de possibilités. Si vous êtes vraiment soucieux de l'efficacité, vous pouvez profiler votre code pour voir où se trouvent les goulots d'étranglement :
http://www.jmp.com/support/help/Debug_or_Profile_Scripts.shtml
Dans le cas précis du remplacement de 0 par manquant, si toutes les colonnes de votre tableau de données (dt) sont numériques continues, vous pouvez faire :
m = dt << GetAsMatrix ;
m[Loc(m == 0) ] = .;
dt2 = AsTable(m);
Ensuite, vous devrez bien sûr corriger les noms et les propriétés des colonnes dans dt2.
Re : Comment puis-je définir une valeur de cellule sur "manquante" via un script ?Quelqu'un a-t-il une recommandation sur l'approche d'exécution d'un certain nombre de ces types d'opérations de nettoyage de données qui offre les meilleures performances ?
Il semble qu'il existe plusieurs façons d'effectuer ces remplacements, mais pour les grands ensembles de données, il peut être important de sélectionner le plus rapide.
J'ai utilisé l'approche des indices multiples sur un ensemble de données de 10 000 colonnes sur 750 lignes, et il a fallu plusieurs minutes pour remplacer 0 par manquant.
Re : Comment puis-je définir une valeur de cellule sur "manquante" via un script ?Utilisez simplement :
"ColumnReference[specificCell] = empty()"
Re : Comment puis-je définir une valeur de cellule sur "manquante" via un script ?BTW, vous n'avez pas besoin de parcourir explicitement les lignes cibles. Vous pouvez leur attribuer simplement et simultanément manquant en utilisant les multiples indices de cette façon :
cleaningColumnRef[badDataPoints] = . ;
Re : Comment puis-je définir une valeur de cellule sur "manquante" via un script ?Vous pouvez explorer l'imitation d'une suppression manuelle avec le Menu principal("Supprimer") commande. Un avertissement, enregistrez vos fichiers avant de lancer car une suppression "manuelle" forcée effacera tout ce qui est sélectionné dans la fenêtre avant.
Exemple utilisant votre terminologie mais sans boucle :
dt = Ouvrir ( "$SAMPLE_DATA/Grande classe.jmp" ) ;
badDataPoints = [ 1 , dix ] ;
nettoyageRéfColonne = Colonne ( "hauteur" ) ;
dt << Aller à ( nettoyageRéfColonne ) ;
dt << sélectionner des lignes ( badDataPoints ) ;
dt << Amenez la fenêtre à l'avant ;
Menu principal ( "Supprimer" ) ;
Re : Comment puis-je définir une valeur de cellule sur "manquante" via un script ?J'ai vérifié que la colonne était verrouillée ou que le type de données était incorrect.
Merci pour les commentaires.Un rapport de capacité a été ajouté aux données que j'analysais.Je suppose que puisque cela faisait référence à la table de données, cela ne me permettrait pas de supprimer des cellules individuelles via un script.Cela me permettra cependant de supprimer manuellement les mauvais points de données.Si je ferme le rapport de capacité, mon script fonctionne à nouveau.
On dirait qu'il devrait y avoir une fonction de script qui me permettra de supprimer les données même si le rapport de capacité est ouvert puisque je peux le faire manuellement.
Re : Comment puis-je définir une valeur de cellule sur "manquante" via un script ?Le seul retour que j'obtiens du journal est le suivant.
For( badPt = 1, badPt <= N Row( badDataPoints ), badPt++,
cleaningColumnRef[badDataPoints[badPt]] = /*###*/. /*###*/
);
Re : Comment puis-je définir une valeur de cellule sur "manquante" via un script ?Il devrait être simple d'attribuer une valeur manquante à une cellule.
Peut-être que la colonne a été verrouillée, a reçu une propriété de formule ou a été définie sur le type de données caractère ?
Re : Comment puis-je définir une valeur de cellule sur "manquante" via un script ?On dirait que quelque chose d'autre a dû changer dans votre code. Par exemple, cela fonctionne :
dt = Ouvrir ( "$SAMPLE_DATA/Grande classe.jmp" ) ;
hVals = Colonne ( dt , "hauteur" ) << getValues ;
hVals [ Loc ( hVals > 60 )] = . ;
Colonne ( dt , "hauteur" ) << setValues ( hVals ) ;
Quelle erreur voyez-vous ?