Script per stack di colonne per prefisso per numero variabile di colonneSto provando a produrre uno script generale che importerà i miei dati da Excel come tabella di dati e quindi impilerò le mie colonne in base al prefisso del nome della colonna. Desidero che venga applicato a set di dati diversi (non allo stesso tempo - solo uno script generale che possa applicarsi a tutti) ciascuno con numeri di esempio diversi (colonne), in cui ogni colonna di dati è elencata come: S01 Vol Density (% ), S02 Vol Density (%), S03 Vol Density (%) ... Sn Vol Density (dove n = qualsiasi numero intero).
Sto pensando che il modo per farlo sia raggruppando le colonne per il prefisso e poi accatastando il gruppo, tuttavia non sono sicuro su come procedere.
Spero che questo abbia un senso - ancora nuovo per lo scripting, quindi mi dispiace se la mia domanda non è la più chiara
NB L'importazione dei dati non è un problema, ma solo l'impilamento
Ri: Script per pila di colonne per prefisso per numero variabile di colonneSì, ecco come potresti farlo:
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 ) )
);
);
Ri: Script per pila di colonne per prefisso per numero variabile di colonneGrazie! Se volessi ricodificare la colonna (con uno script) in modo che rimanesse solo il prefisso cioè che legge solo S01, S02 ecc., Può essere fatto in modo simile allo stack?Ri: Script per pila di colonne per prefisso per numero variabile di colonneCiao @nhun ,
Benvenuto nella community!
Questo è abbastanza facile da fare in una piccola quantità di codice. Ecco un modo che scorre i nomi delle colonne e inserisce quelli con le sottostringhe corrispondenti in un elenco che possiamo usare con Stack. Uso il set di dati dello spessore dalla libreria dei dati di esempio.
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" )
);Dovresti solo sostituire il dt con la tua tabella e str_match = "Vol Density"