Assegnazione del valore minimo a una colonnaCiao gente,
Ho 2 file.
1° fascicolo:

2° fascicolo:

Sto cercando di scrivere uno script che cercherà l'età minima dal 1° file e assegnerà l'età più bassa nel 2° file
Per es
La prima riga che ha tre nomi Sam, Giovanni, Smith quindi dovrebbe essere il valore nella colonna Età minima Min{Sam, John, Smith} Min{21, 27, 32} = 21
il mio output finale sarà simile a questo:

Qualche suggerimento per favore?
Grazie
ScriptingOggetto: assegnazione del valore minimo a una colonnaLa funzione Column() non lo è
d2:Column(2)[I]
è come dichiarato
Column( dt, 2 )[I]
E se gli indici fossero variabili, lo sarebbe lo script completo
Names Default To Here( 1 );
dt1 = Data Table( "1st" );
dt2 = Data Table( "2nd file" );
indexd2minage = 2;
indexd2name = 1;
indexd1name = 1;
indexd1age = 2;
Current Data Table( dt1 );
For( i = 1, i <= N Rows( dt2 ), i++,
Column( dt2, indexd2minage )[i] =
Col Min(
If(
Contains(
Column( dt2, indexd2Name )[i],
as Column( dt1, indexd1Name )
),
Column( dt1, indexd1age ),
.
)
)
);Oggetto: assegnazione del valore minimo a una colonnaCiao @txnelson ,
Ho provato a sostituire il nome della colonna con l'indice della colonna ma non è in esecuzione
Eventuali suggerimenti?
Names default to here(1);
dt1=data table("1st");
dt2=data table("2nd file");
current data table(dt1);
For(i=1,i<=nrows(dt2), i++,
dt2:Column(2)[i] =col min(If(contains(dt2:Column(1)[i],dt1:Column(1)),dt1:Column(2),.));
);
Oggetto: assegnazione del valore minimo a una colonnaIntendo in questo script sostituire il nome della colonna con l'indice della colonna
Names Default To Here( 1 );
dt1 = Data Table( "1st" );
dt2 = Data Table( "2nd file" );
Current Data Table( dt1 );
For( i = 1, i <= N Rows( dt2 ), i++,
dt2:Minimum Age[i] = Col Min( If( Contains( dt2:Name[i], dt1:Name ), dt1:age, . ) )
);
Oggetto: assegnazione del valore minimo a una colonnaEcco uno degli esempi che ho fatto
Column( "Age" ) << Get Property( "Units" );
Se si esamina la documentazione sulla funzione Column() nel riferimento alla sintassi JSL, si legge
Column(<dt>, "name", "formatted")
Column(<dt>, n)
Description
Gets a reference to the data table column.
Arguments
dt Optional reference to a data table. If this is not supplied, the current data table is used.
name Quoted string that is the name of the column.
formatted Quoted string that returns the formatted string of the cell value.
n Column number.
SE leggi l'esempio dalla Guida alla sintassi si legge:
The Column function can also identify a column. For Big Class.jmp, the following expressions
all refer to age, the second column in the table:
Column( "age" );
Column( 2 );
Column( dt, 2 );
Column( dt, "age" );
Oggetto: assegnazione del valore minimo a una colonnaCiao @txnelson ,
Come posso definire l'indice della colonna invece del nome della colonna nello script sopra?
Grazie
Oggetto: assegnazione del valore minimo a una colonnaLa sintassi per ottenere la proprietà è
obj << Get Property( the property you want to retrive );
Pertanto, dovresti chiedere una delle proprietà della colonna per la colonna Età come:
:Age << Get Property( "Spec Limits" );
// or
Column( "Age" ) << Get Property( "Units" );
E JMP consente di creare le proprie proprietà di colonna, quindi potresti fare qualcosa di simile
dt1:Sam << Set Property("Age", 3);
dt1:Andy << Set Property("Age", 4);<BR />theAge = dt1:Andy << Get Property( "Age" );
Oggetto: assegnazione del valore minimo a una colonnaCiao @txnelson ,
Grazie per la sua pronta risposta.
Non ho chiarito la mia domanda.
1.Nella tabella dati 1st_file, hai 9 colonne sì
2. Nella tabella dati 1st_file hai 1 riga di dati per ogni colonna.
Se fai clic con il pulsante destro del mouse sull'intestazione di una colonna e selezioni "Proprietà colonna", vedrai un file ampio elenco di elementi che fanno riferimento alla particolare colonna selezionata.
Posso importare questi valori di elenco estesi nella colonna di 2nd_file?
Possiamo usare la sintassi " Ottieni proprietà() "
Per es .
dt1 << Ottieni Proprietà("Età");
e poi usa for loop per assegnarlo nel secondo file?
Grazie ancora
Oggetto: assegnazione del valore minimo a una colonnaInnanzitutto, devo chiarire un po' di terminologia.
- Nella tabella dati 1st_file, hai 9 colonne
- Nella tabella dati 1st_file hai 1 riga di dati per ogni colonna.Non hai ciò che JMP chiama proprietà della colonna.Se fai clic con il pulsante destro del mouse sull'intestazione di una colonna e selezioni "Proprietà colonna", vedrai un elenco completo di elementi che fanno riferimento alla colonna specifica che hai selezionato.
Cito quanto sopra, solo perché quando hai utilizzato le parole chiave Proprietà colonna, mi è subito venuta l'idea di Proprietà colonna di JMP.Ciò ha creato un mucchio di false supposizioni che mi hanno portato a un sacco di confusione.
A parte questo, ecco un paio dei tanti modi in cui puoi risolvere il tuo problema
Names Default To Here( 1 );
dt1 = Data Table( "1st_file" );
dt2 = Data Table( "2nd file" );
dt2 << New Column( "Minimum Age" );
// Transpose the data into a standard data table format
dt3 = dt1 << Transpose(
invisible,
columns( :Sam, :Andy, :John, :Ed, :Jonny, :Smith, :Scott, :George, :Mathew ),
Output Table( "Transpose of 1st_file" )
);
Current Data Table( dt3 );
For( i = 1, i <= N Rows( dt2 ), i++,
dt2:Minimum Age[i] = Col Min( If( Contains( dt2:Name[i], dt3:Label ), dt3:Name( "Row 1" ), . ) );
Show( dt2:minimum Age[i] );
);
Close( dt3, nosave );
Dedica un po' più di tempo all'elaborazione dei dati, ma non è richiesta la creazione di una tabella secondaria.
Names Default To Here( 1 );
dt1 = Data Table( "1st_file" );
dt2 = Data Table( "2nd file" );
dt2 << New Column( "Minimum Age" );
For( i = 1, i <= N Rows( dt2 ), i++,
ages = {};
For( k = 1, k <= N Cols( dt1 ), k++,
If( Contains( dt2:Name[i], (Column( dt1, k ) << get name) ) > 0,
Insert Into( ages, Column( dt1, k )[1] )
);
);
dt2:Minimum Age[i] = Min( ages );
);Oggetto: assegnazione del valore minimo a una colonnaCiao @txnelson ,
Cosa succede se i valori Age sono archiviati nelle proprietà della colonna? Come posso importare le proprietà della colonna (Età) del 1° file nella colonna (Età minima) del 2° file

Oggetto: assegnazione del valore minimo a una colonnaCosa ti ha impedito di prendere esempio da " Aggiunta di nuove colonne a una tabella di dati " e aggiungerlo al tuo script?
Sapevi che puoi consultare la Guida allo scripting e ottenere esempi di come fare le cose?In caso contrario, ti consiglio vivamente di familiarizzare con esso.
Ecco lo script di esempio che ti ho dato, con il nuovo comando per aggiungere la nuova colonna
Names default to here(1);
dt1=data table("1st");
dt2=data table("2nd file");
dt2 << New Column( "Minimum Age" );
current data table(dt1);
For(i=1,i<=nrows(dt2), i++,
dt2:Minimum Age[i] =col min(If(contains(dt2:Name[i],dt1:Name),dt1:age,.));
);Oggetto: assegnazione del valore minimo a una colonnaCiao @txnelson ,
Grazie per l'aiuto.
Il secondo file non ha la colonna Età minima. Come posso creare la seconda colonna con il nome "Età minima" e quindi assegnare il valore più basso?
Ri: Assegnazione del valore minimo a una colonnaEcco un breve script che farà quello che vuoi......la chiave è che la maggior parte delle persone non si rende conto che ciò che viene passato a una funzione di calcolo può essere condizionale.Vedi lo script qui sotto
Names default to here(1);
dt1=data table("1st");
dt2=data table("2nd file");
current data table(dt1);
For(i=1,i<=nrows(dt2), i++,
dt2:Minimum Age[i] =col min(If(contains(dt2:Name[i],dt1:Name),dt1:age,.));
);Ri: Assegnazione del valore minimo a una colonnaAllegare i file