Come selezionare le righe con più criteri combinatiCIAO,
Sto cercando di isolare un gruppo specifico all'interno di un ampio set di dati utilizzando i seguenti criteri: tutti i soggetti che hanno risposto sì a 2 domande particolari E tutti i soggetti che hanno risposto sì ad altre 3 domande combinate (numero totale di domande = 9). Sono stato in grado di isolare i soggetti che soddisfano il primo criterio piuttosto facilmente ma non so come selezionare i soggetti che soddisfano il secondo criterio (supponendo che tutti i soggetti che soddisfano il primo criterio siano stati rimossi dal campione di interesse per evitare di contarli due volte). Qualsiasi aiuto sarebbe molto apprezzato!
Ri: Come selezionare le righe con più criteri combinatiGrazie per l'informazione! La modifica di Fruit_Scanner=="2" in Fruit_Scanner==2 ha funzionato a meraviglia. Usandolo sono stato finalmente in grado di ottenere le righe che stavo cercando usando quanto segue:
dt = Aprire ( "miofile.jmp" ) ;
dt << Seleziona Dove ( : testendurance_T1 == 1 | : teststrong_T1 == 1 | Somma ( : testenjoy_T1 == 1 , : testad_T1 == 1 , : testsports_T1 == 1 , : sonno di prova_T1 == 1 ,
: testperform_T1 == 1 , : testlibido_T1 == 1 , : maleenergy_T1 == 1 ) >= 3 ) ;
Grazie ancora a tutti per tutto!
Ri: Come selezionare le righe con più criteri combinatiSospetto che le colonne Fruit_scanner e Vegitable_Scanner siano numeriche, non caratteri.Nel tuo esempio "Non funzionante", hai specificato il confronto come:
Fruit_Scanner=="2".
Se Fruit_Scanner è una colonna numerica il confronto sarebbe:
Fruit_Scanner==2
Guarda anche i valori effettivi di Fruit_scanner.Pensavo avessi indicato che i valori erano 0 o 1. Se questo è vero, allora devi cercare:
Fruit_Scanner==1
La risposta originale che ho pubblicato è il formato che deve essere utilizzato per ottenere ciò che desideri.Ciò che è necessario sono i nomi effettivi delle colonne ei valori effettivi in quelle colonne.Se me lo puoi fornire, penso che potrei darti il JSL
Ri: Come selezionare le righe con più criteri combinatiGrazie Jim! Ho provato a sostituire quel 4 con un 1 poiché so che questa combinazione è vera per almeno una riga, ma ancora non è stato selezionato nulla. Nel complesso, sto cercando di selezionare le righe che hanno "sì" (codificato come 1) come risposta per almeno 3 domande su un gruppo di 7 domande totali (quindi >=3 totali). Eventuali suggerimenti sarebbero molto apprezzati.
Grazie ancora!
Ri: Come selezionare le righe con più criteri combinatiSembra che ti manchi come funziona la logica.Quello che hai sotto non può mai avere una somma maggiore di uno.
un confronto booleano restituisce sempre uno 0 o un 1.
Quindi, se stavi controllando per vedere se una variabile chiamata X ha un valore di 22, il comparatore o
X==22 restituirà un 1 quando è vero e uno 0 quando è falso.
nel tuo esempio qui sotto, il comparatore di
Fruit+Screener == "2" & Vegitables_Screener == "2" può essere solo vero(1) o falso(0).
La somma di questo può essere solo uno 0 o un 1, mai un 4
Ri: Come selezionare le righe con più criteri combinatiGrazie per la rapida risposta Jeff! L'aggiunta di " " ha funzionato isolando la riga corrispondente a quel particolare numero ID. Poiché in realtà non so se una riga corrisponde ai criteri di una risposta "sì" (codificata come 1) ad almeno 3 domande dall'insieme di 7 domande menzionate in precedenza, ho provato a inserire un comando di somma per un paio di variabili che sapevo dovrebbe restituire qualcosa. Ecco cosa ho provato:
dt = Aprire ( "miofile.jmp" ) ;
dt << Seleziona Dove ( Somma ( :Fruit_Screener == "2" & :Vegetables_Screener == "2" ) == 4 ) ;
Purtroppo non è successo niente. So che almeno una riga soddisfa i criteri di "no" (codificati come 2) per queste due variabili ma non si è verificata alcuna selezione. Il _ nei nomi delle variabili potrebbe essere un problema o è un errore con la formula della somma?
Grazie ancora!
Ri: Come selezionare le righe con più criteri combinati
@Jeff_Perkinson ha scritto:
Ricorda che vengono visualizzate le colonne dei caratteri Giusto colonne giustificate a sinistra e numeriche sono Sinistra Giusto.
Ho la mia sinistra e la mia destra incasinate sopra. Scusa!
- Jeff
Ri: Come selezionare le righe con più criteri combinatiLa tua colonna ID è un carattere o un numero?
Ricorda che vengono visualizzate le colonne dei caratteri Giusto colonne giustificate a sinistra e numeriche sono Sinistra Giusto.
Se la tua colonna è carattere dovrai mettere il valore ID tra virgolette per il confronto.
Per esempio:
:ID=="1234"
Ri: Come selezionare le righe con più criteri combinatiLa tua colonna ID è un carattere o un numero?
Ricorda che le colonne dei caratteri sono visualizzate giustificate a destra e le colonne numeriche sono visualizzate a sinistra.
Se la tua colonna è carattere dovrai mettere il valore ID tra virgolette per il confronto.
Per esempio:
:ID=="1234"
Ri: Come selezionare le righe con più criteri combinatiGrazie a tutti! Ho provato a modificare il codice ma ancora non ha funzionato, quindi sono entrato nella Guida allo scripting di JMP per cercare di capire le cose. Sono stato in grado di selezionare tutte le righe utilizzando questo codice:
dt = Aperto ( "miofile.jmp" ) ;
dt<
Dato che ha funzionato, ho cercato di utilizzare un codice più semplice di quello originale, ho dovuto vedere se riuscivo a portare le cose in pista usando le istruzioni di JMP. Ho provato a seguire il codice senza successo:
dt = Aprire ( "miofile.jmp" ) ;
dt << Seleziona Dove ( :ID==10322 ) ;
L'ho eseguito senza che venisse visualizzato alcun messaggio di errore, ma non è successo niente. Ho controllato la riga specifica che avrebbe dovuto essere selezionata ma era ancora deselezionata. Ho riprovato ma ancora niente. Andando nel registro degli script, ho trovato quanto segue:
//:*/
dt = Open( "miofile.jmp" );
dt << Seleziona Dove( :ID==10322 );
/*:
Scriptabile[]
//:*/
dt = Open( "Pre_Post_Freshman_Screener_.jmp" );
dt << Seleziona Dove( :ID==10322 );
Ho provato a cambiare il codice in ID=10322 per vedere se avrebbe fatto la differenza e ho ottenuto quanto segue:
/*:
//:*/
dt = Open( "Pre_Post_Freshman_Screener_.jmp" );
dt << Seleziona Dove( :ID=10322 );
/*:
Usa == per il confronto, = è l'assegnazione
Usa == per il confronto, = è l'assegnazione{1}
//:*/
dt = Open( "Pre_Post_Freshman_Screener_.jmp" );
dt << Seleziona Dove( :ID=10322 );
/*:
Usa == per il confronto, = è l'assegnazione
Usa == per il confronto, = è l'assegnazione{1}
//:*/
dt = Open( "Pre_Post_Freshman_Screener_.jmp" );
dt << Seleziona Dove( :ID=10322 );
/*:
Non posso fare a meno di pensare che questo deve essere un semplice errore, ma sono ancora perplesso. qualche idea?
Grazie ancora per il vostro aiuto!
Ri: Come selezionare le righe con più criteri combinatiIl commento di Mark qui sotto è corretto.Nell'esempio che ti ho dato, aveva un commento
/* or >= 3 if that is what you want */
incorporato in una riga di codice.Questo tipo di commento inizia con "/*" e cerca "*/" per terminare il commento.Dal momento che il tuo codice ha solo /*, il ");" sulla riga successiva è considerato parte del commento in corso
Ri: Come selezionare le righe con più criteri combinatiHai iniziato un commento dalla penultima riga, quindi la parentesi di chiusura non viene visualizzata.
Ri: Come selezionare le righe con più criteri combinatiGrazie mille per la rapida risposta Jim. Usando le mie variabili e 1 come codice yes, ho provato quello che mi hai dato:
dt = Tabella dei dati correnti () ;
dt << seleziona le righe dove (
testendurance_T1 == "1" & teststrong_T1 == "1" & Somma (
testenjoy_T1 == "1" ,
testad_T1 == "1" ,
testsports_T1 == "1" ,
sonno di prova_T1 == "1" ,
testperform_T1 == "1" ,
testlibido_T1 == "1" ,
maleenergy_T1 == "1"
) > = 3 /*
);
e ho ottenuto il seguente errore:
Fine imprevista dell'input. Forse manca un "," o ")". Tentativo di analizzare gli argomenti della funzione "seleziona righe dove". Riga 12 Colonna 4: );►
Ho controllato la riga 12 e non soddisfa nessuno dei criteri di inclusione. Mi manca chiaramente qualcosa ma non riesco a capire cosa.
Grazie ancora!
Ri: Come selezionare le righe con più criteri combinatiDi seguito è riportato uno script "Seleziona righe dove" che mostra la logica di ciò che devi fare.Se vuoi farlo in modo interattivo, prendi semplicemente il componente logico dell'istruzione e costruiscilo in:
Righe==>Selezione riga==>Seleziona dove
dt = Current Data Table();
dt << select rows where(
q1 == "Yes" & q2 == "Yes" & Sum(
q3 == "Yes",
q4 == "Yes",
q5 == "Yes",
q6 == "Yes",
q6 == "Yes",
q7 == "yes",
q8 == "Yes",
q9 == "Yes"
) == 3 /* or >= 3 if that is what you want */
);