Comment remplacer les valeurs manquantes par '0' en utilisant JSL<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Comment remplacer les valeurs manquantes par '0' en utilisant JSL ?
Je peux le faire manuellement en utilisant "Rechercher et remplacer tout", mais je dois l'incorporer dans un code qui s'exécute automatiquement tous les jours.
Re : Comment remplacer les valeurs manquantes par '0' à l'aide de JSLCela fonctionne lorsque je l'exécute à partir d'une fenêtre de script en utilisant le bouton de lecture, mais pas dans un débogueur ou en le lançant par autorun du .jsl.
dtLongestWaitStates << set name( "LongestWaitStates" );
dtLongestWaitStates = Current Data Table();
nc = dtLongestWaitStates << get column names( numeric );
For( i = 1, i <= N Items( nc ), i++,
nc[i][dtLongestWaitStates << get rows where( Is Missing( nc[i][] ) )] = 0
);
RaginCajun
JMP13.2.1
Re : Comment remplacer les valeurs manquantes par '0' à l'aide de JSLAbsolument, j'apprécie le mot de prudence.Pour sûr, je n'y ai pas pensé.
Il est également important de se rappeler que les données manquantes peuvent être des données précieuses, et parfois il est préférable de les laisser telles quelles !
Re : Comment remplacer les valeurs manquantes par '0' à l'aide de JSLC'est tout à fait vrai.J'avais l'impression qu'il était temps de mettre un drapeau de prudence.Juste parce que nous peut faire quelque chose dans JMP ne signifie pas toujours que nous devrait .
Re : Comment remplacer les valeurs manquantes par '0' à l'aide de JSLBien que ce que vous dites soit vrai, cela fait des hypothèses sur les données.Par exemple, peut-être que ses données ne sont pas continues ?Parfois, 0 n'est pas enregistré et est plutôt laissé comme manquant.Si quelqu'un essayait de faire une analyse à sens unique en utilisant 0 comme faux et 1 comme vrai ils auraient un problème si leur zéro s'affichait comme manquant , car l'analyse Oneway ignore les lignes manquantes dans JMP.Ils se retrouveraient avec UNE SEULE catégorie !
Il existe d'autres raisons pour lesquelles 0 pourrait apparaître comme manquant.Habituellement, stocker 0 dans une grande base de données est une perte d'espace.Étant donné que Pokemon Go est grand en ce moment, je vais l'utiliser comme exemple.Je pourrais vouloir enregistrer tous les pokémons que j'ai attrapés en une journée, 12 ratattas et 6 pidgeys.Cependant, je ne voudrais pas stocker 0 pour les 148 autres Pokémon que je n'ai pas attrapés ce jour-là.Si je le faisais, je remplirais rapidement ma base de données avec des informations inutiles.Ainsi, si j'interrogeais mes données, il me manquerait la plupart de mes pokémons à un moment donné, mais manquant est = à 0.
Dans des situations similaires, vous pourriez obtenir des données manquantes équivalentes à 0 b/c de problèmes de conversion de données, des requêtes mal conçues, etc.
Re : Comment remplacer les valeurs manquantes par '0' à l'aide de JSLDésolé d'être en retard à cette fête, mais je me sens obligé d'intervenir : la définition des valeurs manquantes à zéro (ou à la moyenne ou à toute autre méthode d'imputation unique) présente de sérieux inconvénients.La plupart de ces approches produisent des estimations de paramètres biaisées, même dans des conditions idéales où les données manquent complètement au hasard.Il existe de bien meilleures façons de traiter les données manquantes.
Re : Comment remplacer les valeurs manquantes par '0' à l'aide de JSLPuisque personne d'autre n'a répondu, la solution est la même, saisissez simplement les colonnes de caractères à la place et définissez les lignes égales au caractère que vous trouvez approprié - "N/A" dans le cas ci-dessous.
Faites juste attention, le définir = 0 changera la colonne en numérique et supprimera toutes les données de caractères, mais =" 0 " devrait convenir.
dt = Current Data Table();
nc = dt << get column names( Character );
For( i = 1, i <= N Items( nc ), i++,
nc[i][dt << get rows where( Is Missing( nc[i][] ) )] = "N/A"
);
Re : Comment remplacer les valeurs manquantes par '0' à l'aide de JSLcool! ... dans les 2 dernières lignes, clsRej devrait être remplacé par clsMat, n'est-ce pas ?
en attendant, avons-nous des solutions similaires pour la colonne de caractères ?
Re : Comment remplacer les valeurs manquantes par '0' à l'aide de JSLAutrement...
clsMat = dt << Get As Matrix( {"colA", "colB"} );
clsMat[Loc( Is Missing( clsMat ) )] = 0;
:colA << Set Values( clsRej[0, 1] );
:colB << Set Values( clsRej[0, 2] );
etc.
l'indexation logique est souvent plus rapide que les boucles
Re : Comment remplacer les valeurs manquantes par '0' à l'aide de JSLmerci à tous !
acclamations!
Re : Comment remplacer les valeurs manquantes par '0' à l'aide de JSLEncore une autre façon de le faire mais avec une seule boucle (Colonnes numériques uniquement).
dt = Current Data Table();
nc = dt << get column names( Numeric );
For( i = 1, i <= N Items( nc ), i++,
nc[i][dt << get rows where( Is Missing( nc[i][] ) )] = 0
);
Re : Comment remplacer les valeurs manquantes par '0' à l'aide de JSLC'est essentiellement la même chose que la réponse d'exj mais un peu plus propre.Cela fait; cependant, seules les modifications manquantes dans les colonnes numériques.
dt = current data table();
for(ij = 1, ij <= NCol(dt), ij +=1,
CurCol = Column(dt, ij);
If(CurCol << get data type == "Numeric",
For Each Row(
IF(IsMissing(CurCol[]), CurCol[] = 0)
);
);
);
Re : Comment remplacer les valeurs manquantes par '0' à l'aide de JSLJ'éviterais d'utiliser j comme variable de bouclage car c'est aussi une fonction JSL.
J(nlignes, , )
Fonction: Crée une matrice de valeurs identiques.
Retour: La matrice.
Arguments:
nrows : Nombre de lignes dans la matrice. Si ncols n'est pas spécifié, nrows est également utilisé comme ncols .
ncols : Nombre de colonnes dans la matrice.
valeur: La valeur utilisée pour remplir la matrice. Si valeur n'est pas spécifié, 1 est utilisé.
Re : Comment remplacer les valeurs manquantes par '0' à l'aide de JSLSalut,
Ceci est basé sur le livre 'Jump into scripting'. Je remplace toutes les valeurs manquantes par z.
allCols = dt2 << Get Column Names( String );
For( i = 1, i <= N Items( allCols ), i++,
/* Loop through each row. */
For( j = 1, j <= N Rows( dt2 ), j++,
/* The IsMissing function will return a ‘1’ or true if the
value is missing. If true, cell is assigned zero. */
If( Is Missing( Column( dt2, allCols ) ),
Column( dt2, allCols ) = "z"
)
)
);
J'espère que cela t'aides.