Entonces, esta demostración ilustrará algunas de las formas en que puede usar matrices. Entonces, en la sección del diario del curso, voy a hacer clic en Cure Time Data. Y supongamos que necesitamos encontrar el tiempo promedio de curación para cada fecha. Así que sumaremos todos los valores de tiempo de curado en cada fila y los dividiremos por el número de muestras. Y voy a usar matrices para realizar este cálculo. Esto es, nuevamente, esas operaciones vectorizadas harán esto más eficiente. Entonces, en el diario del curso, tengo un guión preescrito llamado Calcular estadísticas con matrices. Y permítanme mover esto para que podamos ver tanto la tabla Cure Time (la haremos un poco más amplia, incluso) como nuestro guión. Entonces, el script comienza creando una variable llamada s. Y s va a almacenar el resultado de la función J. Y la función J crea una matriz con un número específico de filas, un número específico de columnas y algún valor inicial. Y en este caso, estoy usando la función Nrow sin argumentos. Así que solo mirará el número de filas en la tabla de datos actual. Así que ejecutaré la línea Y puedes ver en el registro que lo que ahora está almacenado en s es este vector de columna de ceros. Y voy a usar eso para agregar en su lugar cada uno de los valores de tiempo de curado. Así que estoy usando un bucle for. Inicialicé c es igual a porque con los datos de tiempo de curado, quiero comenzar con la segunda columna. Pruebo que c es menor o igual que el número de columnas. Y nuevamente, una mejor práctica sería, especialmente si trabaja con tablas de datos más grandes, hacer este conteo fuera de los bucles for, almacenarlo en una variable y comparar c con esa variable. A continuación, el analizador evalúa el cuerpo del bucle for. Y entonces tomamos-- mira primero el lado derecho de la función de asignación. Así que estoy enviando el mensaje obtener como matriz a la columna esta primera vez y luego lo agrego en su lugar a s. Luego actualizamos c con el operador post-incremento. Entonces eso agrega uno en lugar de c. Probamos para asegurarnos de que c sigue siendo menor o igual que el número de columnas. Y ahora obtenemos la columna como matriz y la agregamos en su lugar a s. Así que voy a seguir adelante y ejecutar las líneas Y recordar que la función for devuelve un valor faltante en el registro. Pero puede pasar el cursor sobre s para ver que ahora contiene estos números bastante grandes, la suma de las cinco columnas de tiempo de curado. Por último, voy a enviar un mensaje a la tabla de datos actual, el mensaje de la nueva columna. Y el título de la nueva columna será Promedio. Y para los valores, y nuevamente, esto podría ser valores establecidos o valores, en realidad voy a hacer un cálculo. Entonces, nuevamente, puedo proporcionar funciones al argumento de valores sin tener que crear variables para almacenarlas primero. Así que la función aquí... Tengo una función de división y una función de resta. Estoy tomando s, que es la suma de las columnas de tiempo de curado, y lo estoy dividiendo por c menos Y es por c menos porque comenzamos a contar c en Entonces eso quita uno de la cantidad de elementos que hemos agregado arriba. Y, por supuesto, c tuvo que incrementar más allá de la prueba. Tuvo que fallar la prueba. Así que el valor final de c-- Puedo desplazarme y ver que eso es Y, sin embargo, en realidad solo agregamos cosas. Es por eso que dividimos por c menos Así que continuaré y ejecutaré esta última línea. Y puede ver que se ha creado la columna Promedio en la tabla de datos de tiempo de curado. E indicado en el registro, puede ver que he creado una instancia de un objeto de columna. Y de hecho, alinear todo en línea ese resultado podría asignarse a una variable si quisiera seguir trabajando más con esa columna. Ahora, para el próximo paso de la demostración, quiero trabajar con todos los datos de Cure Time a la vez, realizando cálculos. Así que voy a extraer toda la tabla de datos como una matriz en lugar de una columna a la vez, como lo hice en este script preescrito. Y antes de hacer eso, quiero deshacerme de esa columna que acabo de crear. Así que voy a seleccionar todo el contenido de esta ventana del Editor de secuencias de comandos. Y voy a enviar un mensaje a la tabla de datos actual. Eliminar columnas. Y la columna que quiero eliminar es la que se llama Promedio. Y me gustaría señalar, nuevamente, que el uso de la tabla de datos actual es muy conveniente cuando se están probando cosas o se están presentando. En un tipo de script de producción, realmente queremos usar referencias más explícitas a nuestra tabla. Entonces, la tabla de datos actual es buena cuando practicas con secuencias de comandos, solo prueba para ver cómo funciona algo. Pero en la práctica, una secuencia de comandos que estaba planeando implementar o usar y desea mantener sobre versiones de JMP y en múltiples situaciones en las que la usa, nos gustaría usar esa referencia de tabla de datos explícita en lugar de la tabla de datos actual. Así que voy a seguir adelante y ejecutar esto. Y eso eliminó la columna de la que quería deshacerme. Devolvió ese mensaje programable al registro. Así que ahora permítanme borrar el contenido de la ventana del editor de secuencias de comandos. Voy a extraer toda la tabla de datos como una matriz y almacenarla en la variable m. Entonces m se le asignará el resultado de enviar un mensaje a la tabla de datos actual. Y ese mensaje se obtiene como matriz. Así que ejecutaré eso. Y puede ver en el registro, o puede pasar el cursor sobre m, que ahora tengo esta matriz. Y la primera columna son estos números realmente enormes. Y, por supuesto, eso es porque cuando envío obtener como matriz a una tabla de datos en general, extraerá todas las columnas numéricas. Y eso incluirá fechas. Entonces, el día aquí se trata como numérico. Se nota por el icono del tipo de modelado, porque es continuo. El tipo de datos tiene que ser numérico. De hecho, también podría, si lo hago más ancho, aunque el día parezca tener caracteres, eso es solo formato. Así que está justificado a la derecha porque es un número. Entonces obtenga como matriz extrajo ese valor también. Y si quiero hacer cálculos sobre el tiempo de curado, y de hecho, los cálculos que quiero hacer implicarán encontrar un valor mínimo y máximo, no quiero estos grandes valores para el día en esa matriz. Así que voy a ir a una nueva fila. Y tendré cuidado. Quiero mantener visible lo que ya tengo: el código que ya puse en la ventana a medida que paso por esto, pero no quiero repetirlo todo. Así que voy a tener mucho cuidado de ejecutar una línea a la vez. Para deshacerme de esa primera columna, voy a usar la variable my subíndice con un cero y un uno. Y si recuerda, ese subíndice solo significa, no seleccione ninguna fila en particular. En otras palabras, dame todas las filas de la primera columna. Y voy a asignar esa matriz vacía, que son solo los corchetes sin nada en ellos. Y nuevamente, para ejecutar solo esa línea, puedo resaltar la línea y usar cualquiera de los métodos que usamos para ejecutar un script completo. Pero solo ejecutará la parte seleccionada o resaltada. O en el teclado numérico de un teclado de escritorio estándar, puedo usar la tecla Intro en ese extremo derecho. Entonces, lo que se devuelve al registro es solo la matriz vacía. Pero si paso el cursor sobre m ahora o si resalto m y lo ejecuto, puede ver que ahora solo tenemos valores de tiempo de curación. Nos hemos deshecho de esa primera columna con esos grandes números de fecha. Iré a una nueva línea y miraré algunas de las otras funciones de matriz que podemos usar. Así que voy a crear una variable, a, a la que se le asignará el resultado de usar la función loc, LOC. Y voy a encontrar las posiciones en esta matriz, m, donde los valores son mayores que Y cuando ejecuto solo esa línea, estamos tratando la matriz, m, como si fuera un vector de fila y contando desde el primero position y simplemente devolviendo las posiciones, las posiciones de subíndices individuales, de todos los elementos en la matriz que son mayores que Ahora, si quisiera los valores reales, crearía una variable llamada avals. Y voy a firmar que el resultado de suscribir la matriz almacenada en m con la variable a. Y correré solo esa línea. Y están los valores de tiempo de curado reales que exceden Y, por supuesto, para simplificar este script, si no necesitara almacenar las posiciones de todos esos valores, simplemente podría haber subíndice-- déjame copiar esto-- subíndice de la matriz m con la función loc. No necesito este paso adicional de almacenar las ubicaciones y luego usarlas, a menos que tenga alguna otra razón para trabajar con las posiciones que había almacenado inicialmente en este ejemplo. Entonces, lo siguiente que quiero hacer con esta matriz es calcular algunos valores transformados. Y esta transformación va a tomar cada observación del tiempo de curado menos el mínimo en toda la tabla dividida por el rango de los valores de tiempo de curado máximo a mínimo y multiplicar eso por Así que es como tomar la distancia en cada observación desde el curado mínimo tiempo como proporción del rango. Esto ilustra otra ventaja de trabajar con matrices. Para encontrar un valor mínimo en una tabla de datos completa, ya sea que estuviera creando secuencias de comandos o trabajando de forma interactiva, trabajar con las columnas individuales en la tabla de datos requeriría muchos pasos para encontrar ese valor mínimo o el valor máximo. Pero al trabajar con una matriz, puedo hacerlo en una línea de código muy corta. Entonces, en la ventana de mi editor de secuencias de comandos, permítanme seguir adelante y borrar el contenido ahora, voy a crear una variable minCT, por lo tanto, tiempo mínimo de curación, y voy a asignar a esa variable el resultado de usar el función min con m como su argumento. Y seguiré adelante y ejecutaré esa línea. Entonces, el valor mínimo es Y luego también crearé una variable maxCT. Y le asignaré el resultado de usar la función max con m como argumento. Y correré solo esa línea. Y eso es Y ahora puedo usar estas variables en mi cálculo de esta transformación. Crearé una variable, t, para almacenar los valores de transformación. Déjame ir a una nueva línea. Entonces a t se le asignará el resultado de veces y luego abrir paréntesis para el numerador m menos minCT cerrar paréntesis el signo de dividir y luego abrir paréntesis para el denominador, maxCT menos minCT. Entonces puedo ejecutar solo esa línea y luego obtengo estos valores de transformación. Cada observación menos el mínimo como proporción del rango de valores de tiempo de curado. Ahora, eso es un montón de lugares decimales. Realmente no tenemos tanta precisión. Así que en realidad podemos redondear estos valores. Y voy a ir a una nueva línea de nuevo. Voy a sobrescribir los valores en t asignando el resultado de la función de ronda nuevamente a t. Podría hacer esto en una nueva variable si quisiera mantener el original. Pero voy a escribir t y luego el operador de asignación, la función de ronda. Los argumentos son primero, ¿a qué estoy redondeando? Así que estoy redondeando los valores almacenados en t. Y entonces, ¿cuántos lugares decimales quiero? quiero cero Ahora, esto va a ser truncar los valores en la matriz. Esto no es lo mismo que formatear una columna de datos para que solo tenga cero lugares decimales donde los valores completos aún se almacenan en segundo plano. Así que no estoy formateando aquí. De hecho, estoy truncando los valores. Seguiré adelante y ejecutaré eso. Y ahora tengo los valores enteros para los valores transformados. Ahora, si desea volver a colocar estos valores en la tabla de datos de tiempo de curado, puede recorrer la matriz y crear nuevas columnas. Si quisiera simplemente crear una nueva tabla de datos por completo, hay una función muy simple llamada tabla. Y hay argumentos opcionales para nombrar esta tabla y para nombrar las columnas. Voy a simplificar las cosas para esta demostración simplemente usando la variable t como argumento de as table. Y cuando ejecuto eso, obtengo esta tabla sin título con nombres de columna genéricos. Pero todos esos valores de esa matriz de transformación poblada en esta tabla. Y nuevamente, podría especificar el nombre y los encabezados de las columnas como parte del argumento de la tabla. O podría usar el script para modificar esto después del hecho. Así que hemos visto un par de formas diferentes de extraer valores numéricos de una tabla de datos, ya sea por columna o la tabla de datos completa, todas las columnas numéricas, la tabla de datos completa y algunas manipulaciones que podemos hacer con las matrices.