Possiamo usare "for loop" in Column Formula?Ciao a tutti,
C'è un modo per combinare queste due operazioni (creazione di una nuova colonna e quindi esecuzione di un ForLoop) in una sola?
Ho ripetuto gli ID cliente in una colonna e poi a un certo punto cambia e il 2° ID continua a ripetersi e poi il 3° e così via. Voglio creare una nuova colonna dire, Unq_Id ei suoi valori dovrebbero essere vuoti fino a quando Customer_Id non cambia. Posso farlo nello script qui sotto, ma mi chiedo se esiste un modo migliore per farlo? Ciò significa: eseguire un ciclo all'interno di Column Formula o qualcosa di simile!
dt << New Column( “Unq_ID”, Numeric, Continuous, Set Each Value() );
dt << Sort( by( :Customer_ID ), Order( Ascending ), Replace Table( 1 ) );
For( i = 1, i <= N Rows( dt ), i++,
If(
:Customer_ID[i] == :Customer_ID[i + 1]
,
:Unq_ID[i] = :Customer_ID[i]
)
);
Qualche suggerimento?
grazie Hary
Modellazione statistica avanzataAutomazione e scriptingConsumatori e ricerche di mercatoOrganizzazione dei contenutiAccesso ai datiPersonalizzazione di massaQualità e ingegneria di processoRi: Possiamo usare "for loop" nella formula di colonna?Sì, stavo cercando il 2° tipo di soluzione.
Grazie.
Ri: Possiamo usare "for loop" nella formula di colonna?Ecco un paio di modi per creare la colonna desiderata

Names Default To Here( 1 );
dt = New Table( "custIDs",
New Column( "Customer_ID", character, values( {"c1", "c1", "c1", "c2", "c2", "c3", "c3", "c3"} ) )
);
dt << New Column( "Or like this" );
counter = 0;
For( i = 1, i <= N Rows( dt ), i++,
If(
i == N Rows( dt ),
counter++;
:or like this[i] = counter;,
:Customer_ID[i] != :Customer_ID[i + 1],
counter++;
:or like this[i] = counter;
)
);
// or
dt << New Column( "or like this using formula",
formula(
x = .;
If( Row() == 1, counter = 0 );
If( :Customer_ID != Lag( :Customer_ID, -1 ) | Row() == N Rows( Current Data Table() ),
counter++;
x = counter;
);
x;
)
);
Ri: Possiamo usare "for loop" nella formula di colonna?Ciao Nelson, ci ho pensato ma non è quello che sto cercando.
Lo script che hai fornito mi sta dando qualcosa come sotto. E quello che sto cercando è all'interno del triangolo rosso.

Inoltre, piuttosto che mettere c1, c2 .... come mettere 1, 2, 3 ... una specie di contatore, che aumenta di 1 non appena c'è un cambiamento.
Qualsiasi aiuto?
Ri: Possiamo usare "for loop" nella formula di colonna?Ecco un modo per farlo

Names Default To Here( 1 );
dt = New Table( "custIDs",
New Column( "Customer_ID",
character,
values( {"c1", "c1", "c1", "c2", "c2", "c3", "c3", "c3"} )
)
);
For( i = 1, i <= N Rows( dt ), i++,
If( i == 1,
dt << New Column( Char( :Customer_ID[i] ), character );
Column( dt, :Customer_ID[i] )[i] = :Customer_ID[i];
,
If( :Customer_ID[i] != :Customer_ID[i - 1],
dt << New Column( Char( :Customer_ID[i] ), character )
)
);
Column( dt, :Customer_ID[i] )[i] = :Customer_ID[i];
);