Problema
Tiene datos en una matriz y necesita una tabla de datos, o al revés
Data table or matrix?Data table or matrix?¿Tabla de datos o matriz?
Solución
Hay una función, AsTable(), que crea una nueva tabla de datos a partir de una matriz, y un método de tabla de datos, GetAsMatrix(), que crea una matriz a partir de las columnas numéricas de una tabla.
También hay una manera de indexar tablas de datos directamente con subíndice de la tabla de datos .
// make a matrix of 5 rows, 3 cols, random values
mat = J( 5, 3, Random Normal() );
// make a data table from a matrix
dt = As Table( mat );
// make a matrix from a data table
mat2 = dt << GetAsMatrix;
// comparing two matrices returns a matrix of answers
// and the All function returns true if all of the
// matrix values are true
Show( All( mat == mat2 ) );
// use data table subscripting to get a matrix of all
// rows and all columns from the table; the zero subscript
// is used with matrix and data table to mean "all
// rows or all columns"
mat3 = dt[0, 0];
Show( All( mat == mat3 ) );
¡Gracias!
Subíndice de tabla de datos describe la indexación de una tabla de datos como una matriz, y ¿Qué es la matriz JSL? muestra cómo utilizar subíndices de matriz. Entonces, con una tabla de datos (o una matriz), en lugar de copiar los datos de la tabla para hacer una matriz, puede obtener una fila de cualquiera de las dos como esta:
// if dt is a table...
rowVector = dt[ rowNumber, 0 ]; // all columns
rowVector = dt[ rowNumber, { age, height, weight } ]; // selected columns
// if m is a matrix
rowVector = m[ row, 0 ];
rowVector = m[ row, 5::9 ]; // selected items from row
// and both dimensions at once
patch = m[ 3::5, 7::11 ];El subíndice cero significa "toda esta dimensión". La indexación de la matriz comienza en uno.
Gracias, muy útil, ¿y alguna forma conveniente de obtener un vector de fila de una tabla de datos?
¡Gracias!