Comment supprimer les lignes dont les données sont manquantes dans toutes les colonnes de mon ensemble de données?Toutes mes excuses pour la base de ma question, je commence tout juste à utiliser JMP pour la première fois.
J'ai un ensemble de données massif (14 colonnes x 20000 lignes) et j'essaie d'écrire un script qui identifiera et supprimera toutes les lignes qui n'ont ni 0 ni 1 pour une plage spécifique de colonnes (colonnes 4-14). Cet ensemble de données provient d'un ensemble de données encore plus grand, il y a donc des lignes dans mon sous-ensemble qui sont complètement vides. Voici un exemple de ce que j'espérais faire:
- - - - -
0 0 1 - 0
- - - - -
1 - - - -
devient:
0 0 1 - 0
1 - - - -
J'ai commencé à écrire le code, mais je suis bloqué - je ne sais pas quoi faire après le For Each Row. J'espérais que ce script regarderait une ligne à la fois, et si une cellule particulière n'avait pas de 0 ou de 1, il chercherait un 0 ou un 1 dans la colonne suivante, et si cela arrivait à la fin de la ligne sans 0 ou 1, alors il supprimerait cette ligne entière. Voici mon code pour l'instant:
dt=Open("File Name")
colnames = dt << get column names( numeric,string );
For( i = 4, i <= N Items( colnames ), i++,
For Each Row(If(:colnames != 0 | :colnames != 1), Continue()
)
);Je pensais utiliser
<< Delete Rows
, que j'ai vu sur d'autres questions sur ce forum. Si cela est trop compliqué avec un script, y a-t-il une meilleure façon de le faire?
ScriptingRe: Comment supprimer les lignes dont les données sont manquantes dans toutes les colonnes de mon ensemble de données?Cela doit-il être un script?
Si vous ne trouvez qu'une seule ligne qui ne contient pas ces cellules spécifiques, sélectionnez les cellules manquantes.
Maintenant, allez dans le menu Lignes et sélectionnez Sélection de lignes> Sélectionner les cellules correspondantes.
Désormais, chaque ligne dont les données sont manquantes dans ces colonnes sera sélectionnée. Choisissez Lignes> Supprimer les lignes.
Re: Comment supprimer les lignes dont les données sont manquantes dans toutes les colonnes de mon ensemble de données?Je pense que vous devez regarder la plate-forme Missing Data Pattern:
Tables => Modèle de données manquantes
D'après votre description, il semble que cela répondra à vos besoins.Il analysera les colonnes que vous spécifiez, puis à partir de la table de données qu'il produit, vous pourrez sélectionner les colonnes contenant toutes les valeurs manquantes, puis les supprimer.
Re: Comment supprimer les lignes dont les données sont manquantes dans toutes les colonnes de mon ensemble de données?ou si vous voulez le script, voici ma suggestion:
dt << New Column("Selected", Character, Nominal, Formula(
If(Is Missing(:Column4) | Is Missing(:Column5)|...until column14,
"Yes",
"No"
)
));
dt << Select Where(:Selected == "Yes");
dt << Delete Rows;Re: Comment supprimer les lignes dont les données sont manquantes dans toutes les colonnes de mon ensemble de données?Ce script prendra en charge votre demande. Ce n'est pas tout à fait unique parmi les autres réponses.
Names Default to Here( 1 );
// get reference to target data table
dt = Current Data Table();
// get all the columns for missing value check
cols = dt << Get Column Names;
// obtain missing value patterns
missing = Current Data Table() << Missing Data Pattern(
Columns( Eval( cols ) ),
Output Table( "Missing Data Pattern" )
);
// make character string representing missing values in all columns
n missing = N Items( cols );
all missing = Repeat( "1", n missing );
// find the row of patterns where all columns are missing.
missing << Select Where( :Patterns == all missing );
// delete the linked rows in the original table
dt << Delete Rows;
// clean up
Close( missing, No Save );
Re: Comment supprimer les lignes dont les données sont manquantes dans toutes les colonnes de mon ensemble de données?Comme le montrent les réponses précédentes, il existe souvent de nombreuses façons d'exécuter une tâche dans JMP.
Si toutes les colonnes 4 à 14 sont numériques, ce script devrait également fonctionner pour supprimer uniquement les lignes avec des valeurs manquantes.
dt = Current Data Table();
dt << Delete Rows(Loc(Is Missing(V Mean(dt[0, 4 :: 14]`))));