Script para la pila de columnas por prefijo para el número variable de columnasEstoy intentando producir un script general que importará mis datos de Excel como una tabla de datos y luego apilaré mis columnas según el prefijo del nombre de la columna. Deseo que se aplique a diferentes conjuntos de datos (no al mismo tiempo, solo un script general que podría aplicarse a todos), cada uno con un número de muestra diferente (columnas), donde cada columna de datos aparece como: S01 Vol Density (% ), S02 Densidad de volumen (%), S03 Densidad de volumen (%) ... Sn Vol Densidad (donde n = cualquier entero).
Estoy pensando que la forma de hacerlo es agrupando las columnas por el prefijo y luego apilando el grupo, pero no estoy seguro de cómo proceder con esto.
Espero que esto tenga sentido - todavía es nuevo en las secuencias de comandos lo siento si mi pregunta no es la más clara
NB Importar datos no es un problema, solo el apilamiento
Re: Script para la pila de columnas por prefijo para el número variable de columnasSí, así es como puedes hacer eso:
For( i = 1, i <= N Col( dt ), i++,
temp_name = Column( dt, i ) << Get Name;
If( Contains( temp_name, "Vol Density" ) > 0,
Column( dt, i ) << Set Name( Word( 1, temp_name ) )
);
);
Re: Script para la pila de columnas por prefijo para el número variable de columnas¡Gracias! Si quisiera recodificar la columna (con una secuencia de comandos) para que solo quedara el prefijo, es decir, para que lea solo S01, S02, etc., ¿se puede hacer esto de manera similar a la pila?Re: Script para la pila de columnas por prefijo para el número variable de columnasHola @nhun ,
¡Bienvenido a la comunidad!
Esto es bastante fácil de hacer en una pequeña cantidad de código. Aquí hay una forma que recorre los nombres de las columnas y las inserta en una lista que podamos usar con Stack. Utilizo el conjunto de datos de Espesor de la Biblioteca de datos de muestra.
dt = Open("$SAMPLE_DATA/Quality Control/Thickness.jmp");
stack_cols = {}; //list to hold the names of columns I want to stack
str_match = "Thickness"; //Substring in column name I want to find
names = dt << Get Column Names;
for(i=1,i<=N Items(names),i++,
If(Contains(char(names[i]),str_match) > 0,
Insert Into(stack_cols, names[i])
)
);
dt << Stack(
columns(stack_cols),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);Solo deberías reemplazar el dt con tu propia tabla y str_match = "Vol Density"