Question JSL: sélectionnez des colonnes et remplacez les valeurs manquantes par zéroQuelqu'un a-t-il un script pour supprimer les colonnes qui ne contiennent que des valeurs manquantes? Je suis en train de nettoyer un tableau de données, ce qui serait très utile pour automatiser ce processus.
Merci,
Pete
Re: question JSL: sélectionnez des colonnes et remplacez les valeurs manquantes par zéroJ'ai parlé (tapé) trop tôt. Une fois que la matrice (datatable) devient un peu plus grande, la première méthode est plus rapide. Sur une matrice de 100 000 lignes x 1 000 colonnes, la première méthode prend 2,48 secondes, tandis que la seconde prend 6,51 secondes. Mon hypothèse est que pour les tables vraiment grandes, la première méthode sera simplement lente, alors que la seconde le sera de manière excrétante.
À votre santé,
Brady
Re: question JSL: sélectionnez des colonnes et remplacez les valeurs manquantes par zéroHé Pete, j'y ai pensé plus tard ... c'est beaucoup plus rapide que la première méthode que j'ai proposée. Par exemple, sur une table de colonnes 1000 colonnes x1000, la première méthode prenait 0,82 seconde, alors que cette méthode prenait 0,017 seconde.
dt << Delete Columns( Loc( V Max( Is Missing( dt << Get All Columns As Matrix ) ) ) );
Re: question JSL: sélectionnez des colonnes et remplacez les valeurs manquantes par zéro @brady_brady C'est probablement mieux, mais j'ai proposé d'utiliser les fonctions All () et Loc () pour les colonnes Numeric et Character.
Quelque chose comme ça:
dt=New Table( "untitled 25 2",
Add Rows( 4 ),
New Column( "Column 1",
Character,
"Nominal",
Set Values( {"a", "a", "a", "a"} )
),
New Column( "Column 2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [., ., ., .] )
),
New Column( "Column 3", Character, "Nominal", Set Values( {"", "", "", ""} ) ),
New Column( "Column 4",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [., 0, 0, 0] )
)
);
For( i = N Cols( dt ), i > 0, i--,
vals = Column( dt, i ) << get values;
show(vals);
If( (Column( dt, i ) << get data type) == "Character",
Show( Loc( vals, "" ) ),
Show( all( vals ) )
);
);
Re: question JSL: sélectionnez des colonnes et remplacez les valeurs manquantes par zéroMerci brady
Re: question JSL: sélectionnez des colonnes et remplacez les valeurs manquantes par zéroPete, si vous voulez supprimer les colonnes (le sujet de l'article dit de remplacer les omissions par des zéros), vous y arriverez.
dt = current data table();
For( i = N Col( dt ), i >= 1, i--,
If( Max( Is Missing( dt[0, i] ) ) > 0,
dt << Delete Columns( i )
)
);
Re: question JSL: sélectionnez des colonnes et remplacez les valeurs manquantes par zéroMerci Mike,
Savez-vous un moyen de script cela? J'étais arrivé à une solution similaire, mais je ne pouvais pas trouver le moyen de l'inclure complètement dans un script.
Re: question JSL: sélectionnez des colonnes et remplacez les valeurs manquantes par zéroVous pouvez le faire en utilisant Missing Value Explorer… en supposant que les données sont numériques. Il suffit d’utiliser l’option «Afficher uniquement les colonnes avec les éléments manquants». Puis (assurez-vous qu'aucune ligne n'a été préalablement sélectionnée dans la table de données), sélectionnez les colonnes du MVE qui ont le même nombre de valeurs manquantes que les lignes de la table de données. Cela sélectionnera les colonnes dans la table de données. Vous pouvez ensuite simplement supprimer les colonnes en cliquant avec le bouton droit de la souris ou en utilisant le menu du triangle rouge.
Meilleur,
M