come si fa una sequenza numerica a valori univoci?Ho la seguente Colonna1 e devo creare una nuova colonna contenente il numero sequenziale di ripetizioni in Colonna1
La tabella risultante dovrebbe assomigliare a questa:
| Colonna1 | Colonna2 |
| un | 1 |
| un | 2 |
| un | 3 |
| b | 1 |
| b | 2 |
| c | 1 |
Qualche suggerimento su come codificare in JSL? (o nella formula della colonna?) grazie!
Re: come si fa una sequenza numerica a valori univoci?Ecco un metodo di formula della colonna:
// define values
Col1Vals = {"a","a","a","a","b","b","c","c","c"};
dt = New Table();
dt << New Column("MyValues",Character,Nominal,<< Set Values(Col1Vals));
// Create Cumulative Frequencies
dt << New Column("CumulativeFreqCount",Numeric,Continuous);
dt:CumulativeFreqCount << Set Each Value(
If(
Row() == 1, 1,
:MyValues == Lag( :MyValues, 1 ), Lag(:CumulativeFreqCount, 1 ) + 1,
1
)); // end set each valueRe: come si fa una sequenza numerica a valori univoci?In realtà, ho perso la parte in cui volevi ottenere una somma cumulativa, piuttosto solo la somma.
Sono abbastanza sicuro che ci siano modi più intelligenti ed efficienti per farlo. Questo funzionerà però.
In sostanza sto creando anche i dati grezzi, per testarli e giocarci
// define values
Col1Vals = {"a","a","a","a","b","b","c","c","c"};
dt = New Table();
dt << New Column("MyValues",Character,Nominal,<< Set Values(Col1Vals));
// Generate summary
dt1 = dt << Summary( Group( :MyValues ), Freq( "None" ), Weight( "None" ) );
UniqueItems = dt1:MyValues << Get values;
FrequencyOfItems = dt1 << Get As Matrix; <BR /><BR />Close(dt1,"No Save");
// Add Cumulative Frequencies back
dt << New Column("CumulativeFreqCount",Numeric,Continuous);
for(i = 1, i <= N Items(UniqueItems),i++,
Rows = dt << Select Where(:MyValues == UniqueItems[i]) << Get Selected Rows;
ValsToAppend = Transpose(Index(1,FrequencyOfItems[i]));
dt[Rows,"CumulativeFreqCount"] = ValsToAppend;
dt << Clear Select;
); 
Re: come si fa una sequenza numerica a valori univoci?grazie.Ho inserito il codice in un file di script JMP (vedi allegato) ma lo script non viene eseguito.Eventuali suggerimenti?
Sarebbe più facile inserire il codice in una formula di colonna?
Re: come si fa una sequenza numerica a valori univoci?@rs ,
Supponendo che tu abbia un riferimento alla tabella dei dati, diciamo dt:
dt1 = dt << Summary(
Group( :Column 1 ),
Freq( "None" ),
Weight( "None" )
)
Se i dati non sono ordinati (in genere dovrebbe), è possibile utilizzare sort() sulla tabella risultante