Dopo aver raggruppato diverse colonne importanti, voglio nascondere le colonne rimanenti nella "soffitta".
Come posso ottenere un elenco di tutte le colonne non raggruppate?
Ottieni l'elenco di tutte le colonne, ottieni l'elenco delle colonne raggruppate ed elimina quelle raggruppate dall'elenco delle colonne
Names Default To Here(1);
// Setup
dt = Open("$SAMPLE_DATA/Cities.jmp");
dt << group columns("xy", {:X, :y});
dt << group columns("pollutants", :Ozone :: :Lead);
collist = dt << Get Column Names("String");
grouped_list = {};
For Each({groupname}, dt << get column groups names,
c = dt << get column group(groupname);
groupcols = Transform Each({cr}, c, cr << get name);
Insert Into(grouped_list, groupcols);
);
nongrouped = Set Difference(collist, grouped_list);
For Each({colname}, nongrouped,
Column(dt, colname) << Hide(1);
);
wait(0);
La deviazione tramite stringhe ha senso : )
Mi chiedo perché sia necessario...
Names Default To Here(1);
// Setup
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dd= dt << group columns("xy", {:X, :y});
ee= dt << group columns("pollutants", :Ozone :: :Lead);
Type(ee)
collist = dt << Get Column Names();
grouped_list = {};
groups= dt << get column groups names;
For Each({groupname},groups,
groupcols= dt << get column group(groupname);
Insert Into(grouped_list, groupcols);
);
Show(grouped_list); // list of names with ":" {:OZONE, :CO, :SO2, :NO, :PM10, :Lead, :X, :Y};
show(collist);// list of names without ":" {city, Latitude, Longitude, ... }
nongrouped = Set Difference(collist, grouped_list); // ?!?! {city, CO, Latitude, Lead, Longitude, Max deg. F Jan, NO, OZONE, PM10, POP,"pop- m"n, Region, SO2, State, X, Y}
dettagli che è importante sapere:
- Il valore restituito dalle colonne del gruppo << è una stringa, non un gruppo di colonne.
<< get column group returns a list of columns, not a column group
- importante: QUESTO elenco di colonne elenca i nomi con ":" iniziale
- compare: get column names() restituisce un elenco di nomi senza il carattere iniziale ":"
- -> le due liste non sono compatibili tra loro
Soluzioni alternative:
- tramite Stringa
- tramite colonne
convert to list of columns = Function ({myColList},
Transform each({col},myColList, Name Expr(As column(dt, col)))
);
grouped_list = convert to list of columns(grouped_list); // looks like before, but is something completely different
collist = convert to list of columns(collist); //{:city, :Latitude, :Longitude, ... }
nongrouped = Set Difference(collist, grouped_list);
Show (nongrouped) // {:city, :Latitude, :Longitude, :Max deg. F Jan, :POP, :"pop- m"n, :Region, :State};
Quando ho a che fare con le colonne, l'unica cosa che mi interessa è convertirle tutte in stringhe, perché eviterebbe un'enorme quantità di problemi che altrimenti si potrebbero verificare. A mio parere, non c'è praticamente alcun motivo per provare a gestire le colonne inizialmente con qualcosa di diverso dalle stringhe, dato che si può sempre passare da una stringa ad altri "formati di colonna". E, se c'è un motivo per iniziare da qualcosa di diverso da una stringa, secondo la mia esperienza non ne vale la pena.