¿Podemos usar "for loop" en la fórmula de columna?Hola a todos,
¿Hay alguna forma de combinar estas dos operaciones (crear nuevas columnas y luego ejecutar un ForLoop) en una sola?
He repetido ID de cliente en columnas y luego cambia en algún momento y la segunda ID sigue repitiéndose y luego la tercera y así sucesivamente. Quiero crear una nueva columna, por ejemplo, Unq_Id y sus valores deben estar vacíos hasta que cambie Customer_Id. Puedo hacer esto en el script a continuación, pero me pregunto si hay alguna manera mejor de hacerlo. Esto significa: ¡ejecutar un bucle dentro de la fórmula de columna o algo similar!
dt << Nueva columna (“Unq_ID”, numérico, continuo, establecer cada valor ());
dt << Ordenar (por (: Customer_ID), Orden (ascendente), Reemplazar tabla (1));
Para (i = 1, i <= N filas (dt), i ++,
Si(
: Customer_ID [i] ==: Customer_ID [i + 1],: Unq_ID [i] =: Customer_ID [i]
)
);
¿Cualquier sugerencia?
gracias, Hari
ScriptingRe: ¿Podemos usar "for loop" en la fórmula de columna?Aquí hay una forma de hacerlo.

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];
);
Re: ¿Podemos usar "for loop" en la fórmula de columna?Hola Nelson, lo pensé pero no es lo que estoy buscando.
El guión que proporcionaste me da algo como a continuación. Y el que estoy buscando está dentro del tringle rojo.

Además, en lugar de poner c1, c2 .... cómo poner 1, 2, 3 ... una especie de contador, que aumenta en 1 tan pronto como hay un cambio.
¿Alguna ayuda?
Re: ¿Podemos usar "for loop" en la fórmula de columna?Aquí hay un par de formas de crear la columna que desea.

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;
)
);
Re: ¿Podemos usar "bucle for" en la fórmula de columna?Sí, estaba buscando el segundo tipo de solución.
Gracias.