Come gestire le virgolette nel nome della colonna quando si tenta di utilizzarle in una formula dinamica<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Supponiamo di avere una tabella con intestazioni Greek e AlsoGreek come segue:
Anche grecoGreco
Alfa Phi
BetaOmega
Gamma Zeta
Il seguente script mi darà una colonna chiamata "concat" che combinerà le 2 colonne (ho aggiunto delle tabulazioni tra i simboli concat per renderla più leggibile).
dt = Tabella dati corrente();
colnames = dt<
colstring=":Nome(\!"" || char(colnames[1]) || "\!")";
for(i=2,i<=nitems(colnames),i++,
colstring=colstring || "||" || ":Nome(\!"" || char(colnames ) || "\!")"
);
parsecolstring=analizza(colstring);
dt<
Ora, la cosa strana è che se metto l'intestazione della tabella AlsoGreek tra virgolette (come "AlsoGreek"), il codice non funziona.Ecco l'output del log degli errori (ho aggiunto show dopo tutte le variabili nel codice sopra in modo da poter vedere cosa stava succedendo
colnames = {Greco, Nome("\!"AncheGreco\!"")};
Char(colnames[1]) = "Greco";
colstring = ":Nome(\!"Greco\!")";
colstring = ":Nome(\!"Greco\!")||:Nome(\!"\!"AncheGreco\!"\!")";
Era previsto ")", ma è stato trovato "AlsoGreek".
Riga 1 Colonna 25: :Nome("Greco")||:Nome("" ►AncheGreco"")
Esiste una soluzione per questo?In caso contrario, esiste un modo per estrarre le virgolette dal nome della colonna?Ho provato a utilizzare il sostituto per rimuovere \!", ma JMP non lo riconosce come una stringa...
Qualsiasi aiuto sarebbe molto apprezzato!Ho più di 100 colonne con virgolette nel nome della colonna...
Ri: Come gestire le virgolette nel nome della colonna quando si tenta di utilizzarle nella formula dinamicaÈ stato difficile per me capire cosa stavi cercando di ottenere. Ma, se vuoi concatenare TUTTI i nomi delle colonne in una tabella JMP e creare una nuova colonna con quel nuovo nome, questo codice dovrebbe funzionare per il tuo esempio:
Creando la variabile NameofNewColumn e utilizzandola in un'istruzione New Column contenuta nella funzione EVAL....potrebbe aiutarti.
dt = Tabella dati corrente();
colnames = dt<
NomedellaNuovaColonna = "";
For(i=1, i < N Elementi(nomicol)+1, i++,
NomeNuovaColonna = NomeNuovaColonna || Char(colnames );
);
eval(dt<
Ri: Come gestire le virgolette nel nome della colonna quando si tenta di utilizzarle nella formula dinamicaImmagino che risponderò alla mia risposta...
Il problema è che JMP non riconosce quali virgolette sono associate a \!" e quali no.Quindi il mio sospetto è che quando usi una funzione char su una colonna tra virgolette e poi provi ad analizzarla o a fare qualcos'altro su quella stringa, ti imbatterai in problemi.
Esistono 2 modi per gestire questa situazione: il primo modo è inserire tutte le colonne che si desidera concatenare in un elenco e quindi utilizzare l'opzione parse(concat(list)).
L'altro modo (che è quello che ho usato) è inserire le colonne in un elenco, quindi rimuovere le virgolette utilizzando una semplice istruzione for:
senza virgolette={},
for(i=1,n<=nitems(elencoorigli),i++,
inserire in(senzavirgolette,sostituire(char(origlist ),"\!"",""));
come nome(origlist < );
);
Utilizza i nomi dell'elenco noquotes per fare riferimento alle colonne di interesse e, una volta terminato, puoi ripristinare i nomi delle colonne come erano originariamente eseguendo il contrario dello script precedente.