Modifica del nome di ogni terza (n+3) colonna/e con un nome specifico; Oltre 100 colonneCiao a tutti,
Sto cercando di nominare un gruppo di colonne, più di 100. Ho fatto un sacco di cose da testo a colonne e ho molti set di tre colonne a cui voglio dare gli stessi nomi. Vedi sotto:

Sopra mostra le colonne con i nomi che voglio avere, a sinistra della linea rossa. Mostra anche le colonne con i nomi che voglio sostituire. Come puoi vedere, vorrei cambiare ogni terza colonna, a partire da n=1 (o qualunque numero di colonna voglio iniziare), e ogni tre colonne successive (n+3), rinominare la colonna in "pX ". Lo stesso vale per "num_after_pipe" e "value". Tutti fino a un certo punto.
Sto lavorando con il seguente script per rinominare ogni set di tre colonne"
dt_stack:"Data 1"n+3<<Set Name("pX");
dt_stack:"Data 2"n<<Set Name("num_after_pipe");
dt_stack:"Data 3"n<<Set Name("value");
dt_stack:"Data 4"n<<Set Name("pX");
dt_stack:"Data 5"n<<Set Name("num_after_pipe");
dt_stack:"Data 6"n<<Set Name("value");
dt_stack:"Data 7"n<<Set Name("pX");
dt_stack:"Data 8"n<<Set Name("num_after_pipe");
.....
Eventuali suggerimenti?
Grazie!
Saluti,
AlphaLion662
Tabella datiScriptingOggetto: Modifica del nome di ogni terza (n+3) colonna/e con un nome specifico; Oltre 100 colonneCiao @AlphaLion662 ,
È questo che stavi cercando? Tieni presente che non so come desideri modificare i nomi delle colonne, quindi ho appena aggiunto i prefissi.Puoi vedere i prefissi nelle variabili prima, seconda e terza.La ridenominazione della colonna avviene nel blocco sotto la nota " Col cambio di nome qui ".
Names default to here(1);
clear log();
dt = open( "$SAMPLE_DATA/Arrhythmia.jmp" );
// Gets all column names in a list
allcols = dt << Get column names();
// Stores the number of columns
numcols = N Items( allcols );
// Some modifier to column names
first = "Tree";
second = "Car";
third = "Star";
For( i = 1, i <= numcols, i++,
// Temporarly stores the column name for later usage
temp = column( dt, allcols[i] ) << Get Name;
if(
// First col, then every 3rd col thereafter
i == 1 | Modulo( i - 1, 3 ) == 0,
// Col name change here
col_Name1 = column(dt,i) << Get Name;
newname1 = first || "_" || col_Name1;
eval( column(allcols[i] ) ) << Set Name( newname1 ),
// Second col, then every 3rd col thereafter
i == 2 | Modulo( i - 2, 3 ) == 0, //( i - 2 ) % 3
// Col name change here
col_Name2 = column(dt,i) << Get Name;
newname2 = second || "_" || col_Name2;
eval( column(allcols[i] ) ) << Set Name( newname2 ),
// Third col, then every 3rd col thereafter
i == 3 | Modulo( i - 3, 3 ) == 0,
// Col name change here
col_Name3 = column(dt,i) << Get Name;
newname3 = third || "_" || col_Name3;
eval( column(allcols[i] ) ) << Set Name( newname3 ),
);
);
Oggetto: Modifica del nome di ogni terza (n+3) colonna/e con un nome specifico; Oltre 100 colonneEhi StarfruitBob,
Dopo averci giocherellato per un po ', questo ha funzionato per me. Grazie!
Oggetto: Modifica del nome di ogni terza (n+3) colonna/e con un nome specifico; Oltre 100 colonneNel tuo caso puoi anche incrementare il ciclo in 3 secondi e impostare tre colonne contemporaneamente in un singolo ciclo
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Probe.jmp");
dt << Ungroup Columns(); // easier to see what is going on if we remove Responses column group
start_col_idx = 4;
colnames = {"px", "num_after_pipe", "value"};
For(i = start_col_idx, i <= N Cols(dt), i = i + 3, // we can increment in 3s
Try( // lazy try-catch to exit when we cannot set more column names
Column(i) << Set Name(colnames[1]);
Column(i + 1) << Set Name(colnames[2]);
Column(i + 2) << Set Name(colnames[3]);
,
show(exception_msg);
break();
);
);
