¿Contar el valor en varios caracteres y marcar la posición?Hola, ¿cómo puedo contar el número 0,1,2 de la columna de característica 1 como se muestra a continuación? ¡Muchas gracias! (x = faltante)
| Patrón | Cuenta 0 | Cuenta 1 | Cuenta 2 | Posición 0 | Posición 1 | Posición 2 |
| x,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0 | 26 | 1 | 0 | 2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27, 28 | 4 | 0 |
| 2,2,2,2,2,0,0,0,0,0,0,1,1,1,2,0,1,1,1,2,2,2,2,0,0,0, 0,0,0 | | | | | | |
| 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1, 1,1,0 | | | | | | |
| 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, 1,0,1 | | | | | | |
| 2,2,2,2,2,2,2,2,0,2,2,2,0,0,0,1,2,2,2,2,2,2,2,2,2, 2,2,2 | | | | | | |
Análisis y modelado de datos básicosRe: ¿Contar valor en varios caracteres y marcar posición?Loc() puede conseguirle los índices. A continuación se muestra una solución rápida y sucia.
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(5),
Compress File When Saved(1),
New Column("Pattern",
Character,
"Nominal",
Set Values(
{"x,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0",
"2,2,2,2,2,0,0,0,0,0,0,1,1,1,2,0,1,1,1,2,2,2,0,0,0,0,0,0",
"0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,1,0",
"0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1",
"2,2,2,2,2,2,2,2,0,2,2,2,0,0,0,1,2,2,2,2,2,2,2,2,2,2,2,2"}
)
)
);
vals = {"0", "1", "2"};
For Each({val}, vals,
new_col1 = dt << New Column("Count " || val, Numeric, Continuous, Formula(
N Items(Loc(Words(:Pattern, ","), val));
));
new_col2 = dt << New Column("Position " || val, Character, Nominal, Formula(
Char(Substitute(Char(Loc(Words(:Pattern, ","), val);), "[", "", "]", "", " ", ""));
));
dt << run formulas;
new_col1 << delete formula;
new_col2 << delete formula;
);Re: ¿Contar valor en varios caracteres y marcar posición?Hola jthi,
Gracias por su ayuda. Pero si tengo varias filas, ¿puedo usar la matriz u otro comando en lugar del
Set Values(
{"x,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0",
"2,2,2,2,2,0,0,0,0,0,0,1,1,1,2,0,1,1,1,2,2,2,0,0,0,0,0,0",
"0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,1,0",
"0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1",
"2,2,2,2,2,2,2,2,0,2,2,2,0,0,0,1,2,2,2,2,2,2,2,2,2,2,2,2"}¡Gracias!
Re: ¿Contar valor en varios caracteres y marcar posición?Obtenga la referencia a su tabla de datos a la variable dt (por ejemplo, Open() devolverá una referencia a la tabla que se abrió) y el script debería funcionar siempre que la columna se llame Patrón
Re: ¿Contar valor en varios caracteres y marcar posición?Gracias, pero quiero decir que tengo 6453 filas (que necesito copiar todos los datos en "establecer valor {}". ¿Podría proporcionarme una mejor solución para esto? Muchas gracias.
Re: ¿Contar valor en varios caracteres y marcar posición?No es necesario copiar nada. Simplemente obtenga una referencia a su tabla de datos.
dt = Open("pathtomytable");
o
dt = Datatable("mytablename")
o (normalmente es una mala opción, pero hace lo que necesitas de vez en cuando)
dt = Current Data Table();
Utilice el que se ajuste a sus necesidades para reemplazar esta parte de mi solución.
dt = New Table("Untitled",
Add Rows(5),
Compress File When Saved(1),
New Column("Pattern",
Character,
"Nominal",
Set Values(
{"x,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0",
"2,2,2,2,2,0,0,0,0,0,0,1,1,1,2,0,1,1,1,2,2,2,0,0,0,0,0,0",
"0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,1,0",
"0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1",
"2,2,2,2,2,2,2,2,0,2,2,2,0,0,0,1,2,2,2,2,2,2,2,2,2,2,2,2"}
)
)
);
Ver más...For example
Names Default To Here(1);
dt = Current Data Table();
vals = {"0", "1", "2"};
For Each({val}, vals,
new_col1 = dt << New Column("Count " || val, Numeric, Continuous, Formula(
N Items(Loc(Words(:Pattern, ","), val));
));
new_col2 = dt << New Column("Position " || val, Character, Nominal, Formula(
Char(Substitute(Char(Loc(Words(:Pattern, ","), val);), "[", "", "]", "", " ", ""));
));
dt << run formulas;
new_col1 << delete formula;
new_col2 << delete formula;
);
Re: ¿Contar valor en varios caracteres y marcar posición?Hola jarmo,
Muchas gracias. Es trabajo.
Re: ¿Contar valor en varios caracteres y marcar posición?¿Está diciendo que sus datos reales se encuentran actualmente en una matriz JMP, no en una tabla de datos JMP?
Re: ¿Contar valor en varios caracteres y marcar posición?Hola Jim,
Es mi culpa entendido. Mis datos están en la tabla JMP. Ya ha funcionado, aconsejó Jarmo. Además, ¿tienes una idea de poner los datos en la columna "patrón" para agruparlos en los mismos grupos? como las posiciones 1-5 con el valor de 1 es lo mismo que las posiciones 6-8 con el valor de 1. (¿Cómo generar el mismo patrón de valor en múltiples posiciones?)
| Patrón | Nombre del patrón |
| 0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0 | 1 |
| 0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0 | 1 |
| 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0 | 2 |
| 0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0 | 2 |
| 0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0 | 2 |
| 0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0, 0,0,0 | 2 |
| 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0, 0,0,0 | 2 |
| 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1, 0,0,0 | 2 |
| 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1,1,1 | 2 |
| 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 2,2,2 | 3 |
| 0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,0,0,0,0,0,0,0,0, 0,0,0 | 3 |
| 0,1,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,0,0,0,0,0,0,0,0, 0,x,0 | 4 |
| 0,0,0,1,0,0,0,0,0,0,0,2,2,2,2,2,2,0,0,0,0,0,0,0,0, 0,0,0 | 4 |
| 1,0,0,0,0,1,0,0,0,0,0,2,2,2,2,2,2,0,0,0,0,0,0,0,0, 0,0,0 | 4 |
Re: ¿Contar valor en varios caracteres y marcar posición?Hay algunas formas diferentes de hacer esto.
- Utilice Recode para crear una nueva columna que tendrá los nuevos valores de grupo.
- Establezca la propiedad de columna de la columna de recuento llamada Etiquetas de valor y use la opción "Permitir rangos" para cambiar los valores mostrados.
- Write a little script that creates a new column and does the binning
Names Default To Here( 1 );
dt = Current Data Table();
dt << New Column( "Count 1 Bins",
character,
set each value(
If(
:Count 1 <= 5, "1-5",
:Count 1 <= 10, "6-10",
:Count 1 <= 15, "11-15"
)
)
);
Re: ¿Contar valor en varios caracteres y marcar posición?Hola Jim,
Muchas gracias, pero cuando intento 1 y 2, parece difícil debido a la gran cantidad de filas de datos (6000+). La dosis de 3 no funciona porque tiene múltiples patrones (patrón 2000 de 28 posiciones en 6000 filas).
Atentamente,
Theerachai
Re: ¿Contar valor en varios caracteres y marcar posición?Mi malentendido. Ahora mi respuesta es que estoy seguro de que JMP puede hacer lo que usted quiera... si puede definir las reglas sobre cómo determinar qué es un grupo.
Re: ¿Contar valor en varios caracteres y marcar posición?Hola Jim, gracias. Intento combinar el patrón de datos. En general, mis posiciones de datos 1-5, 6-9,10-11,12-17, 18-22, 23-25 y 26-28 son las mismas categorías si tienen los mismos 0-2 puntos (sin fijar posición en cada categoría) además, a veces, las categorías serían 11-17, 1 5 6 8 13 18 23 26, 2 7 19 24 25 27 28, 3 9, 4 20 22 y 21. Y quiero encontrar otros patrones en todos los datos. ¿Podrías por favor orientarme?
¡Gracias!
Re: ¿Contar valor en varios caracteres y marcar posición?Sigo confundido. Adjuntó una tabla de datos de ejemplo. ¿Podría tomar una fila específica de la tabla de datos de ejemplo y explicar la lógica de cómo analizaría los datos de la fila?