Come ottenere nomi di colonne che contengono determinate parole fornite dall'utente?CIAO,
Sto cercando consigli su come ottenere colonne che contengano determinate parole che mi interessano.
Ad esempio:
Vorrei ottenere qualsiasi nome di colonna che contenga "Numero" nei dati di esempio forniti di seguito. L'elenco restituito previsto di nomi di colonne deve essere {"Flight Number" , "Tail Number"}. Tuttavia, non sono in grado di ottenere nulla restituito. I miei codici sono i seguenti:
dt = open("$SAMPLE_DATA/Air Traffic.jmp");
a= "Number";
col=dt<<GET column="" names=""></GET>
Qualsiasi aiuto o consiglio sarà molto apprezzato! Grazie in anticipo!
Ri: Come ottenere nomi di colonne che contengono determinate parole fornite dall'utente?No. Il tipo di colonna è carattere.
Ri: Come ottenere nomi di colonne che contengono determinate parole fornite dall'utente?Questo è abbastanza diverso dal thread originale.Suggerisco di creare un nuovo argomento.La tua colonna dei passi ha un tipo di dati numerico?
Ri: Come ottenere nomi di colonne che contengono determinate parole fornite dall'utente?CIAO,
Sono bloccato con un problema simile. Devo verificare se le colonne contengono una delle 2 stringhe e quindi sostituire il valore della colonna con il valore in un'altra colonna.
Ecco il codice -
For(i=1,i<= NRows(dt),i++,
if(contains(:step[i],"NA")| contains(:step[i],".") ,
:step[i] = description[i];
)
);
Ma ricevo un messaggio di errore che dice: l'argomento è un tipo errato di accesso o valutazione di "Contiene"
Cosa sto facendo di sbagliato qui?
Ri: Come ottenere nomi di colonne che contengono determinate parole fornite dall'utente?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> Grazie ancora Ian.
La tua soluzione funziona a meraviglia!
Distinti saluti,
Val
Ri: Come ottenere nomi di colonne che contengono determinate parole fornite dall'utente?Devi distinguere tra un elenco e il tipo di elementi che contiene (che, in generale, non devono essere omogenei). L'errore è dovuto al fatto che stai tentando di inserire l'elenco xxx (che contiene elementi che sono tutti caratteri) in una cella in una colonna di caratteri.
Il modo migliore per farlo dipenderà da ciò che accade dopo nel tuo codice. Sospetto che potresti voler avere "AvaliableColumns" come colonna di espressione, piuttosto che una colonna di caratteri:
dt = Open( "$SAMPLE_DATA/Air Traffic.jmp" );
a = {"Number", "Flight"};
col = dt << get column names( string );
nc = N Items( col );
dt1 = New Table( "Table1" );
c1 = (dt1 << New Column( "SelectedNames", character, set values( a ) )) << get values;
dt1 << New Column( "AvailableColumns", expression );
For( j = 1, j <= N Items( c1 ), j++,
xxx = {};
For( i = 1, i <= nc, i++,
If( Contains( col[i], a[j] ), InsertInto(xxx, col[i]) );
);
Column( dt1, 2 )[j] = xxx;
);
Ri: Come ottenere nomi di colonne che contengono determinate parole fornite dall'utente?Ciao Ian Ian@JMP ,
Un'estensione di ciò su cui stavo lavorando in precedenza:
Utilizzando gli stessi dati della domanda precedente, in base alle parole selezionate che desidero dalle colonne disponibili nella tabella dei dati "Traffico aereo", mi aspetto un output come mostrato di seguito se le colonne disponibili nei dati contengono le parole in " SelectedNames" nelle rispettive righe:

Tuttavia ricevo questo messaggio di errore nel registro e nessun inserimento di nomi di colonna corretti nella seconda colonna:


Questi sono i miei codici, potete aiutarmi a verificare cosa c'è che non va?
dt = Open( "$SAMPLE_DATA/Air Traffic.jmp" );
a = {"Number", "Flight"};
col = dt << get column names( string );
nc = N Items( col );
dt1 = New Table( "Table1" );
c1 = (dt1 << New Column( "SelectedNames", character, set values( a ) )) << get values;
dt1 << New Column( "AvailableColumns", character );
xxx={};
For( j = 1, j <= N Items( c1 ), j++,
For( i = 1, i <= nc, i++,
If( Contains( col[i], a[j] ),
Insert Into( xxx, col[i] )
);
Column( dt1, 2 )[j] = Eval( xxx );
xxx = {};
);
Ri: Come ottenere nomi di colonne che contengono determinate parole fornite dall'utente?Grazie, Ian!
Esattamente la soluzione che sto cercando.
Distinti saluti,
Val
Ri: Come ottenere nomi di colonne che contengono determinate parole fornite dall'utente?Ricorda che 'col' sarà una lista. Allora prova:
dt = Open( "$SAMPLE_DATA/Air Traffic.jmp" );
a = "Number";
col = dt << get column names( string );
nc = N Items( col );
xxx = {};
For( i = 1, i <= nc, i++,
If( Contains( col[i], a ),
Insert Into( xxx, col[i] )
)
);
Stampa ( xxx ) ;