Come posso eliminare righe di numeri di colonna variabili quando mancano tutti i datiHo un set di dati generato automaticamente e alcune delle colonne, quelle che contengono una sottostringa "X_Clean", avranno alcuni valori nulli.A volte ci sono 2, 3, 4 o anche 5 colonne diverse, dipende dal set di dati.Voglio eliminare le righe solo quando TUTTE le "n" di queste colonne "X_Clean" hanno valori nulli ma mai se almeno una di esse è popolata con un valore.
Stavo pensando di fare un ciclo FOR per generare l'elenco di colonne di interesse, e funziona.
col_list = dt <<GET column="" names="">0, i--,
if(!contains(col_list[i], "X_Clean"),
remove from(col_list, i);
));</GET>Ma poi non sono sicuro del passo successivo.Poiché non posso eseguire un altro ciclo FOR per ogni singola colonna, devo riassumere i valori di tutte queste colonne e, se nullo, eliminare ... o qualcos'altro?
Ecco un esempio della mia tabella, in questo caso solo la terza riga della data si qualificherebbe per essere cancellata.
| Entità | 2X_Pulizia | 3X_Pulizia | 4X_Pulizia |
| UN | 1 | 3 | 6 |
| B | | 4 | 5 |
| UN | | | |
| B | 4 | 1 | 3 |
| UN | 3 | 4 | 4 |
| 6 | 1 | 1 | 0 |
Ecco come l'avrei fatto se avessi potuto codificare colonne specifiche, tranne che non posso perché variano.
dt << Select Where(Is Missing(:Name( "2X_Clean" ) | :Name( "3X_Clean" ) | :Name( "4X_Clean" )))<<DELETE rows=""></DELETE>
Qualche idea?Grazie!
Ri: Come posso eliminare righe di numeri di colonna variabili quando mancano tutti i datiGrazie Jim.
Ri: Come posso eliminare righe di numeri di colonna variabili quando mancano tutti i datiÈ colpa mia.Avrei dovuto rendermi conto che una colonna che inizia con un numero avrebbe confuso JMP.Ho aggiunto in :Name() funzioni attorno ai riferimenti ai nomi delle colonne.
dt = Current Data Table();
col_list = dt << get column names( string );
For( i = N Items( col_list ), i > 0, i--,
If( !Contains( col_list[i], "X_Clean" ),
Remove From( col_list, i )
)
);
theExpr = "dt << select where(isMissing(Sum(:name(\!"" || col_list[1];
For( i = 2, i <= N Items( col_list ), i++,
theExpr = theExpr || "\!"),:name(\!"" || col_list[i]
);
theExpr = theExpr || "\!")))==1)<<DELETE rows=""></DELETE>
Ri: Come posso eliminare righe di numeri di colonna variabili quando mancano tutti i datiJim, questo è un argomento interessante. Quando apro la tabella dei dati, come allegata, ed eseguo il seguente jsl, sembra che non riesca a eliminare tutta la riga nulla. Perché?
dt = attuale datatable () ;
l'Espr = "dt << select where(isMissing(Sum(:" || col_list [ 1 ] ;
Per ( io = 2 , io <= N articoli ( col_list ) , io ++,
l'Espr = l'Espr || ",:" || col_list [ io ]
) ;
l'Espr = l'Espr || "))==1)< ;
Valutazione ( Analizza ( l'Espr ) ) ;
Ri: Come posso eliminare righe di numeri di colonna variabili quando mancano tutti i datiTutto quello che devi fare è costruire una variabile stringa letterale che è il codice dinamico che devi eseguire per ottenere ciò che vuoi, e poi, una volta costruito, eseguirlo.Il codice seguente è un esempio di come lo faresti
theExpr = "dt << select where(isMissing(Sum(:" || col_list[1];
For( i = 2, i <= N Items( col_list ), i++,
theExpr = theExpr || ",:" || col_list[i]
);
theExpr = theExpr || "))==1)<<DELETE rows=""></DELETE>