Después de agrupar varias columnas importantes, quiero ocultar las columnas restantes en el "ático".
¿Cómo puedo obtener una lista de todas las columnas no agrupadas?
Obtener la lista de todas las columnas, obtener la lista de columnas agrupadas y eliminar las agrupadas de la lista de columnas
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);
El desvío a través de cuerdas tiene sentido 
Me pregunto por qué es necesario...
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}
Detalles que es importante saber:
- El valor de retorno del grupo de columnas << es una cadena, no un grupo de columnas.
<< get column group returns a list of columns, not a column group
- Importante: ESTA lista de columnas enumera los nombres con ":" al principio
- comparar: obtener nombres de columnas() devuelve una lista de nombres sin el ":" inicial
- -> las dos listas no son compatibles entre sí
Soluciones alternativas:
- a través de String
- a través de columnas
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};
Cuando trabajo con columnas, lo único que me importa es convertirlas todas en cadenas, ya que así evitaría muchísimos problemas. En mi opinión, no hay ninguna razón para intentar trabajar con columnas inicialmente con algo que no sean cadenas, ya que siempre se puede pasar de una cadena a otros formatos de columna. Y, si hay una razón para empezar con algo que no sea una cadena, en mi experiencia no merece la pena.