Oggetto: script JMP per colonna mediaCiao @hsjoyner ,
Hai studiato la funzione column ()? Invece di usare un nome di colonna, puoi usare il suo index.Questo potrebbe essere utile in un ciclo for().

Oggetto: script JMP per colonna mediaSe il numero di colonne è fisso, puoi codificare il file significa ,
se "ecc." è variabile, probabilmente ne avrai bisogno Inserire E Eval(Sostituto()):
dt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
offset = 5;
nc = N Col( dt );
length = 10;
groups = Floor((nc - offset) / length);
For( group = 1, group <= groups, group++,
myFormula = Expr( Mean() );
For( i = 1, i <= length, i++,
Insert Into( myFormula, NameExpr(As Column( offset + (group-1)*length +i ) ))
);
myName = "average" || Char( group );
Eval(Substitute(Expr(new Column(__myName__,Formula(__myFormula__))),Expr(__myFormula__),NameExpr(myFormula),Expr(__myName__),NameExpr(myName) ));
);
Oggetto: script JMP per colonna mediaEcco uno script che spero crei quello che stai cercando.Crea nuove colonne che mediano gruppi di 10 colonne per un numero indeterminato di colonne.

names default to here(1);
// Create an example data table to use for illustration of how to
// create the sets of average columns
dt =
// Open Data Table: semiconductor capability.jmp
// → Data Table( "semiconductor capability" )
Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
// Delete the first 3 columns to match the description
// of the suggested data table structure
dt << delete columns({"lot_id","wafer","wafer ID in lot ID"});
// Create new columns that have the groups of 10 columns
startingNCol = N Cols(dt);
start = 2;
groupSize = 10;
while(start+groupSize<=startingNCol,
eval(substitute(expr(
dt << New Column("Average " || char( start ) || "-" || char(start + groupSize),
set each value(Mean(current data table()[row(),index(theStart,theEnd)])));
),
expr(theStart), start, expr(theEnd), start+groupSize
));
start=start+groupSize;
);
Oggetto: script JMP per colonna mediaMean(current data table()[row(),index(theStart,theEnd)])
wow, molto elegante - molto più bello che riempire manualmente la media con i riferimenti di colonna!
Script JMP per colonna mediaHo uno sceneggiatore JMP MOLTO inesperto che cerca di scrivere un comando per calcolare la media di un insieme di colonne in una nuova colonna con le medie. Ciò equivale a evidenziare le colonne, quindi selezionare Nuova colonna formula > Combina > Media. Tuttavia, non riesco a trovare nulla nella libreria degli script o online che mi permetta di farlo. Qualcuno ha dei suggerimenti?
Per aggiungere un'ulteriore complicazione, voglio che lo script prenda le colonne 2-11, 12-21, 22-31, ecc. e faccia la media di ciascun gruppo di colonne. Le colonne non hanno nomi impostati, quindi non posso semplicemente inserire i nomi delle colonne nello script (non è possibile rendere coerenti i nomi perché i nomi delle colonne sono nomi di esempio e devo mantenerli in questo modo). Il numero di gruppi di colonne in ciascun file JMP non è coerente poiché il numero di campioni in ciascun file JMP può variare notevolmente. C'è un modo semplice per fare questo?
Sto usando JMP 17.0.0 su un Mac se è utile. Qualsiasi aiuto è apprezzato!
Miscelazione e pulizia dei datiMac OSRe: Script JMP per colonna mediaPerché la colonna formula non riesce a produrre gli stessi valori della colonna Media 2 - 12?
Media( :NPN1, :PNP1, :PNP2, :NPN2, :PNP3, :IVP1, :PNP4, :NPN3, :IVP2, :NPN4, :SIT1 )
Modifica: ero distratto mentre scrivevo il commento e la formula sopra riportata produce un valore corrispondente.
Follow-up: Mean() sembra molto sensibile alle proprietà Formato delle colonne, poiché ho ottenuto risultati diversi nella mia tabella dati quando le colonne erano impostate su Larghezza fissa Dec 15 Dec 3 rispetto a Larghezza migliore 12. Avete suggerimenti per evitare questo problema?
Re: Script JMP per colonna mediaCiao @hsjoyner ,
Se ho capito bene, e finché vuoi la media di tutti i gruppi di colonne, dovresti essere in grado di ottenere un elenco dei gruppi di colonne nella tabella e quindi scorrere i nomi di quei gruppi per creare colonne formula che estraggano dinamicamente le colonne in ciascun gruppo. Qualcosa del genere:
dt = Current Data Table();
groupNames = dt << get column groups names;
For Each( {groupName, index}, groupNames,
Eval(
Eval Expr(
dt << New Column( groupName || " Mean",
Formula( Mean( Current Data Table() << get column group( Expr( groupName ) ) ) )
)
)
)
);
Spero che questo ti sia d'aiuto!
@julian
Modifica: dopo aver riletto il tuo messaggio e le risposte, mi sono reso conto che stai parlando di gruppi di colonne (come insiemi di colonne) piuttosto che di colonne che si trovano in gruppi effettivi nella tabella. Quindi, questa risposta non ti sarà utile, ma la lascio qui nel caso in cui qualcuno si trovasse in questa situazione!:grinning_face: