Asignación de valor mínimo a una columnaHola amigos,
tengo 2 archivos
1er archivo:

2do archivo:

Estoy tratando de escribir un script que buscará la edad mínima del primer archivo y asignará la edad más baja en el segundo archivo
Por ejemplo
La primera fila que tiene tres nombres Sam, Juan, Smith por lo que el valor en la columna de edad mínima debe ser Min{Sam, John, Smith} Min{21, 27, 32} = 21
mi resultado final se verá así:

¿Alguna sugerencia por favor?
Gracias
secuencias de comandosRe: Asignar valor mínimo a una columnaLa función Column() no es
d2:Column(2)[I]
es como se indica
Column( dt, 2 )[I]
Y si los índices fueran variables, el script completo sería
Names Default To Here( 1 );
dt1 = Data Table( "1st" );
dt2 = Data Table( "2nd file" );
indexd2minage = 2;
indexd2name = 1;
indexd1name = 1;
indexd1age = 2;
Current Data Table( dt1 );
For( i = 1, i <= N Rows( dt2 ), i++,
Column( dt2, indexd2minage )[i] =
Col Min(
If(
Contains(
Column( dt2, indexd2Name )[i],
as Column( dt1, indexd1Name )
),
Column( dt1, indexd1age ),
.
)
)
);Re: Asignar valor mínimo a una columnaHola @txnelson ,
Traté de reemplazar el nombre de la columna con el índice de la columna, pero no se está ejecutando
¿Alguna sugerencia?
Names default to here(1);
dt1=data table("1st");
dt2=data table("2nd file");
current data table(dt1);
For(i=1,i<=nrows(dt2), i++,
dt2:Column(2)[i] =col min(If(contains(dt2:Column(1)[i],dt1:Column(1)),dt1:Column(2),.));
);
Re: Asignar valor mínimo a una columnaMe refiero a que en este script se reemplaza el nombre de la columna con el índice de la columna
Names Default To Here( 1 );
dt1 = Data Table( "1st" );
dt2 = Data Table( "2nd file" );
Current Data Table( dt1 );
For( i = 1, i <= N Rows( dt2 ), i++,
dt2:Minimum Age[i] = Col Min( If( Contains( dt2:Name[i], dt1:Name ), dt1:age, . ) )
);
Re: Asignar valor mínimo a una columnaEste es uno de los ejemplos que puse
Column( "Age" ) << Get Property( "Units" );
Si examina la documentación sobre la función Column() en la Referencia de sintaxis JSL, se lee
Column(<dt>, "name", "formatted")
Column(<dt>, n)
Description
Gets a reference to the data table column.
Arguments
dt Optional reference to a data table. If this is not supplied, the current data table is used.
name Quoted string that is the name of the column.
formatted Quoted string that returns the formatted string of the cell value.
n Column number.
SI lee el ejemplo de la Guía de sintaxis, dice:
The Column function can also identify a column. For Big Class.jmp, the following expressions
all refer to age, the second column in the table:
Column( "age" );
Column( 2 );
Column( dt, 2 );
Column( dt, "age" );
Re: Asignar valor mínimo a una columnaHola @txnelson ,
¿Cómo puedo definir el índice de columna en lugar del nombre de columna en el script anterior?
Gracias
Re: Asignar valor mínimo a una columnaLa sintaxis para obtener la propiedad es
obj << Get Property( the property you want to retrive );
Por lo tanto, solicitaría una de las Propiedades de columna para la columna Edad como:
:Age << Get Property( "Spec Limits" );
// or
Column( "Age" ) << Get Property( "Units" );
Y JMP permite crear sus propias propiedades de columna, por lo que podría hacer algo como
dt1:Sam << Set Property("Age", 3);
dt1:Andy << Set Property("Age", 4);<BR />theAge = dt1:Andy << Get Property( "Age" );
Re: Asignar valor mínimo a una columnaHola @txnelson ,
Gracias por su rápida respuesta.
No aclaré mi pregunta.
1.En la tabla de datos 1st_file, tiene 9 columnas Sí
2. En la tabla de datos 1st_file, tiene 1 fila de datos para cada columna.
Si hace clic con el botón derecho en el encabezado de una columna y selecciona "Propiedades de columna", verá un extensa lista de elementos que se refieren a la columna particular que seleccionó.
¿Puedo importar estos extensos valores de lista en la columna de 2nd_file?
¿Podemos usar la sintaxis " Obtener propiedad() "
Por ejemplo .
dt1 << Obtener Propiedad("Edad");
y luego usar for loop para asignarlo en el segundo archivo?
Gracias de nuevo
Re: Asignar valor mínimo a una columnaPrimero, necesito aclarar algo de terminología.
- En la tabla de datos 1st_file, tiene 9 columnas
- En la tabla de datos 1st_file, tiene 1 fila de datos para cada columna.No tiene lo que JMP denomina propiedades de columna.Si hace clic derecho en el encabezado de una columna y selecciona "Propiedades de columna", verá una lista extensa de elementos que se refieren a la columna en particular que seleccionó.
Menciono lo anterior, solo porque cuando usó las palabras clave, Propiedad de columna, inmediatamente tuve la idea de Propiedades de columna JMP.Eso configura un montón de suposiciones falsas que me llevan a un montón de confusión.
Aparte de eso, aquí hay un par de la gran cantidad de formas en que uno puede resolver su problema
Names Default To Here( 1 );
dt1 = Data Table( "1st_file" );
dt2 = Data Table( "2nd file" );
dt2 << New Column( "Minimum Age" );
// Transpose the data into a standard data table format
dt3 = dt1 << Transpose(
invisible,
columns( :Sam, :Andy, :John, :Ed, :Jonny, :Smith, :Scott, :George, :Mathew ),
Output Table( "Transpose of 1st_file" )
);
Current Data Table( dt3 );
For( i = 1, i <= N Rows( dt2 ), i++,
dt2:Minimum Age[i] = Col Min( If( Contains( dt2:Name[i], dt3:Label ), dt3:Name( "Row 1" ), . ) );
Show( dt2:minimum Age[i] );
);
Close( dt3, nosave );
Tómese un poco más de tiempo para procesar los datos, pero no se requiere la creación de una tabla secundaria.
Names Default To Here( 1 );
dt1 = Data Table( "1st_file" );
dt2 = Data Table( "2nd file" );
dt2 << New Column( "Minimum Age" );
For( i = 1, i <= N Rows( dt2 ), i++,
ages = {};
For( k = 1, k <= N Cols( dt1 ), k++,
If( Contains( dt2:Name[i], (Column( dt1, k ) << get name) ) > 0,
Insert Into( ages, Column( dt1, k )[1] )
);
);
dt2:Minimum Age[i] = Min( ages );
);Re: Asignar valor mínimo a una columnaHola @txnelson ,
¿Qué sucede si los valores de edad se almacenan en las propiedades de la columna? ¿Cómo puedo importar propiedades de columna (Edad) de 1st_file en la columna (Edad mínima) de 2nd file?

Re: Asignar valor mínimo a una columna¿Qué te impidió tomar el ejemplo de " Agregar nuevas columnas a una tabla de datos " y agregarlo a su script?
¿Sabía que puede ir a la Guía de secuencias de comandos y obtener ejemplos de cómo hacer las cosas?Si no es así, le recomiendo encarecidamente que se familiarice con él.
Aquí está el script de muestra que le di, con el nuevo comando para agregar la nueva columna
Names default to here(1);
dt1=data table("1st");
dt2=data table("2nd file");
dt2 << New Column( "Minimum Age" );
current data table(dt1);
For(i=1,i<=nrows(dt2), i++,
dt2:Minimum Age[i] =col min(If(contains(dt2:Name[i],dt1:Name),dt1:age,.));
);Re: Asignar valor mínimo a una columnaHola @txnelson ,
Gracias por tu ayuda.
El segundo archivo no tiene columna de edad mínima. ¿Cómo puedo crear la segunda columna con el nombre "Edad mínima" y luego asignar el valor más bajo?
Re: Asignar valor mínimo a una columnaAquí hay un breve script que hará lo que usted quiera... la clave es que la mayoría de las personas no se dan cuenta de que lo que se pasa a una función de cálculo puede ser condicional.Vea el guión a continuación
Names default to here(1);
dt1=data table("1st");
dt2=data table("2nd file");
current data table(dt1);
For(i=1,i<=nrows(dt2), i++,
dt2:Minimum Age[i] =col min(If(contains(dt2:Name[i],dt1:Name),dt1:age,.));
);Re: Asignar valor mínimo a una columnaAdjuntar los archivos