Agregar contador para casos únicos en gruposHola a todos,
¿Cómo puedo escribir un contador de valores enteros para incrementar valores únicos en la columna B dentro del grupo A, para hacer esto?

Esto es lo que he intentado hasta ahora:
dt_Table1 = Data Table("Table1");
dt_Table1 << New Column("Dataset", Numeric, "Nominal", Set Selected);
Sum1 = dt_Table1 << Summary(Group(:Group, :Date));
Sum2 = Sum1 << Summary(Group(:Group));
:N Rows << Set Name("N Datasets in Group");
dt_Table1 << Update(
with(Data Table(Sum2)),
Merge Same Name Columns
Match Flag(0),
Suppress foruma evaluation(0),
By Matching Columns(:Group = :Group),
Drop multiples(1, 0),
Include Nonmatches(0, 0),
Preserve main table order(1)
);
dt = dt_Table1;
For(i = 1, i <= :N Rows(dt), i++,
While(Group_Number = GetValue(:Group[i]),
N == Get Value(dt, :N Datasets in Group[i]),
For(j = 1, j <= N, j++,
:Dataset << Set Value == (j),
),
Group_Number = Group_Number + 1,
),
);
Salidas:


Automatización y secuencias de comandosAnálisis y modelado de datos básicosRe: Agregar Contador para Casos Únicos en GruposDebería poder hacer esto con alguna combinación de las funciones Col Rank(), Col Cumulative Sum, Col Min(), etc. Según su ejemplo, Col Rank() o Col Cumulative Sum(1, ) deberían ser suficientes (no hay fechas duplicadas en ninguno de los grupos).
La columna 3 está usando Col Rank y la columna 4 Col Cumulative Sum y la columna 5 es una opción de fórmula un poco más complicada
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(8),
Compress File When Saved(1),
New Column("g", Numeric, "Continuous", Format("Best", 12), Set Values([1, 1, 1, 1, 2, 2, 2, 2])),
New Column("d", Numeric, "Continuous", Format("Best", 12), Set Values([1, 2, 3, 4, 1, 2, 2, 3])),
New Column("r", Numeric, "Continuous", Format("Best", 12), Set Values([1, 2, 3, 4, 1, 2, 2, 3])),
New Column("Column 3", Numeric, "Continuous", Format("Best", 12), Formula(Col Rank(:d, :g))),
New Column("Column 4", Numeric, "Continuous", Format("Best", 12), Formula(Col Cumulative Sum(1, :g)))
);
dt << New Column("Column 5", Numeric, Continuous, Formula(
Col Cumulative Sum(
If(Row() == Col Min(Row(), :g, :d),
1
,
.
),
:g
)
));

Re: Agregar Contador para Casos Únicos en GruposGracias Jarmo!Tu camino es definitivamente más limpio.No sigo totalmente la lógica, ¡pero veo que funciona!
Nota: Encontré otra forma, que también usaba Col Cumulative Sum().Más lento que el tuyo.Múltiples subtablas y una combinación...
Resumen1 = Tabla1 << Resumen(Grupo(:Grupo, :Fecha));
Resumen2 = Resumen1 << Resumen(Grupo(:Grupo, :Fecha));
Resumen2 << Nueva columna ("Conjunto de datos",
Numérico,
"Nominal",
Conjunto seleccionado
);
:Conjunto de datos << Formula(Col Cumulative Sum( :N Filas, :Grupo ) );
//Unirse a la tabla 1
Tabla1 << Unirse(
con (Tabla de datos (Resumen2)),
Seleccionar todo),
Seleccionar con(
:Conjunto de datos
),
Por columnas coincidentes (: Ejecutar =: Ejecutar),
Soltar múltiplos (1, 0),
Incluir no coincidencias (0, 0),
Conservar el orden de la mesa principal ( 1 ),
Nombre de la tabla de salida ("Tabla2")
);
Re: Agregar Contador para Casos Únicos en GruposHago una nueva columna con esta fórmula.
Si ( Fila () == 1 ,
1 ,
Si ( :DNI == Retraso ( :IDENTIFICACIÓN, 1 ),
Retraso ( : Nombre ( "Recuento de ID" ) ) + 1 , 1 ))
Esto supone que su columna "ID" está ordenada secuencialmente.
la columna Recuento de ID es el nombre de la nueva columna con la fórmula anterior
Re: Agregar contador para casos únicos en gruposHm, parece que al editor de fórmulas le falta un Col N Categorias funcionar con una opción Agrupar por.
El deseo está esperando felicitaciones:
nueva función JSL: Col N Categorías
Re: Agregar contador para casos únicos en gruposAquí hay un pequeño script que produce la cantidad de valores únicos que se encuentran en la columna B, dentro de la columna A.
Names Default To Here( 1 );
dt = new table("Example",
New Column("A", character),
New Column("B", character)
);
charList = {"A","B","C","D","E","F","G","H","I","J"};
dt << add rows(25);
for each row(
:A = char(random integer(1,5));
:B = charList[random integer(1,10)]
);
dt << New Column( "count",
set each value(
As Constant( Summarize( dt, bygroup = by( :a, :p</img> ) ) );
N Items( Loc( bygroup[1], :a ) );
)
);Re: Agregar contador para casos únicos en gruposbuena solución 
(p -> b)
pero los desaparecidos Col N Categorias todavía duele. ¿Se puede agregar un función personalizada Col N Categorias (: columna, <{...}>)
la lista opcional podría usarse para especificar columnas/subgrupos usados como por, como :a en el ejemplo anterior.
¿Quién sabe cómo en la función de resumen se puede hacer referencia a las columnas?
Función personalizada: cómo hacer referencia a la columna
Re: Agregar contador para casos únicos en gruposPor lo general, también se puede usar alguna combinación extraña de diferentes funciones Col Something() (puede que no sea la más rápida debido a la comparación realizada y, si no recuerdo mal, no deberías usar las funciones Col de esta manera, aunque es una de las mejores formas de utilizarlos).
dt << New Column("C", Formula(
Col Sum(Row() == Col Min(Row(), :A, :B), :A);
));
Re: Agregar contador para casos únicos en grupos
¿Se puede agregar un función personalizada Col N Categorias (: columna, <{...}>)
No de una manera limpia y agradable. Creación de una función estadística personalizada (fórmula) que tiene byVar , Opción o función para evaluar una fórmula de columna personalizada a la vez o almacenar en caché valores entre filas
Re: Agregar contador para casos únicos en grupos
@jthi escribió:
No de una manera limpia y agradable.
¡Ay!
quería agregar la costumbre Col N Categorias función para tenerla disponible en el menú Nueva columna de fórmula al hacer clic derecho.
Entonces, si requiere adicional Expr() Exresiones alrededor de las columnas al llamar a la función, ¿NO hay posibilidad de hacerlo bien?
Argh....
Realmente sorprendente que se tarde tanto en agregar lo que falta Col N Categorias 
Re: Agregar contador para casos únicos en grupos¡asombroso!
Dependiendo de la estructura de la tabla, muchos órdenes de magnitud más rápido 
pero todavía lejos de una solución para el botón derecho del ratón Nueva columna de fórmula menú 
Names Default To Here( 1 );
dt = new table("Example",
New Column("A", character),
New Column("B", character)
);
dt << add rows(20000);
for each row(
:A = char(random integer(1,5));
:B = char(random integer(1,1000));
);
t0 = hptime();
dt << New Column( "count",
set each value(
As Constant( Summarize( dt, bygroup = by( :a, :b) ) );
N Items( Loc( bygroup[1], :a ) );
)
);
(hptime() -t0)/1000000; //~ 1min
t0 = hptime();
dt << New Column("C", set each value(
Col Sum(Row() == Col Min(Row(), :A, :B), :A);
));
(hptime() -t0)/1000000; // < 1secRe: Agregar contador para casos únicos en gruposBuenas noticias: JMP19 proporcionará N Col() única :
https://community.jmp.com/t5/JMP-Wish-List/Col-N-Categories/idc-p/870972/highlight/true#M7292
y estará disponible a través del nuevo menú de la columna de fórmula:
