Importar datos combinados de un archivo de texto a una tabla
Este ejemplo muestra cómo utilizar la funciónreadtable
para importar datos combinados numéricos y de texto a una tabla, especificar los tipos de datos para las variables y luego añadir una nueva variable a la tabla.
Visión general del archivo de muestra
El archivo de muestra,outages.csv
, contiene datos que representan cortes de electricidad en los Estados Unidos. Las primeras líneas del archivo son:
Region,OutageTime,Loss,Customers,RestorationTime,Cause
SouthWest,2002-01-20 11:49,672,2902379,2002-01-24 21:58,winter storm
SouthEast,2002-01-30 01:18,796,336436,2002-02-04 11:20,winter storm
SouthEast,2004-02-03 21:17,264.9,107083,2004-02-20 03:37,winter storm
West,2002-06-19 13:39,391.4,378990,2002-06-19 14:27,equipment fault
Leer un archivo de texto
Importe los datos usandoreadtable
y muestre las primeras cinco filas. La funciónreadtable
detecta automáticamente el delimitador y los tipos de variable.
T = readtable ('outages.csv'); head(T,5)
Region OutageTime Loss Customers RestorationTime Cause _____________ ________________ ______ __________ ________________ ___________________ {'SouthWest'} 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 {'winter storm' } {'SouthEast'} 2003-01-23 00:49 530.14 2.1204e+05 NaT {'winter storm' } {'SouthEast'} 2003-02-07 21:15 289.4 1.4294e+05 2003-02-17 08:14 {'winter storm' } {'West' } 2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10 {'equipment fault'} {'MidWest' } 2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23 {'severe storm' }
Especificar los tipos de datos de las variables antes de la importación
La actualización de los tipos de datos de las variables a los tipos de datos de MATLAB® correspondientes puede beneficiar a los datos, según el tipo de variables del archivo. Por ejemplo, la primera y la sexta columnas deoutages.csv
son categóricas. Designando estas dos columnas como arregloscategorical
, se pueden aprovechar las funciones de MATLAB para procesar datos categóricos.
Designe y especifique los tipos de datos de las variables de una de estas maneras:
Especifique el par nombre-valor de
Format
enreadtable
Establezca la propiedad
VariableTypes
de las opciones de importación del archivo
Utilice el par nombre-valor deFormat
para especificar los tipos de datos de las variables, leer los datos y mostrar las cinco primeras filas. En la parte%{yyyy-MM-dd HH:mm}D
del especificadorformatSpec
, el texto incluido entre las llaves describe el formato de los datos de fecha y hora. Los valores especificados enFormat
designan:
La primera y última columnas del archivo como datos categóricos
La segunda y quinta columnas como datos de fecha y hora con formato
La tercera y cuarta columnas como valores de punto flotante
formatSpec ='%C%{yyyy-MM-dd HH:mm}D%f%f%{yyyy-MM-dd HH:mm}D%C'; T = readtable('outages.csv','Format',formatSpec); head(T,5)
Region OutageTime Loss Customers RestorationTime Cause _________ ________________ ______ __________ ________________ _______________ SouthWest 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 winter storm SouthEast 2003-01-23 00:49 530.14 2.1204e+05 NaT winter storm SouthEast 2003-02-07 21:15 289.4 1.4294e+05 2003-02-17 08:14 winter storm West 2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10 equipment fault MidWest 2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23 severe storm
De forma alternativa, especifique los tipos de datos para las variables utilizando la funciónsetvartype
de las opciones de importación. Primero, cree un objeto de opciones de importación para el archivo. El archivo de datos contiene diferentes tipos de variables. Designe la primera y última variables como arregloscategorical
, la segunda y quinta como arreglosdatetime
y las restantes comodouble
.
opts = detectImportOptions('outages.csv'); varNames = opts.VariableNames ; varTypes = {'categorical','datetime','double',...'double','datetime','categorical'}; opts = setvartype(opts,varNames,varTypes);
Importe los datos usandoreadtable
conopts
y después muestre las primeras cinco filas.
T = readtable ('outages.csv',opts); head(T,5)
Region OutageTime Loss Customers RestorationTime Cause _________ ________________ ______ __________ ________________ _______________ SouthWest 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 winter storm SouthEast 2003-01-23 00:49 530.14 2.1204e+05 NaT winter storm SouthEast 2003-02-07 21:15 289.4 1.4294e+05 2003-02-17 08:14 winter storm West 2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10 equipment fault MidWest 2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23 severe storm
Añadir una nueva variable a la tabla
La tablaT
contieneOutageTime
yRestorationTime
. Calcule la duración de cada corte de electricidad y añada estos datos a la tabla.
T.Duration = T.RestorationTime - T.OutageTime; head(T,5)
Region OutageTime Loss Customers RestorationTime Cause Duration _________ ________________ ______ __________ ________________ _______________ _________ SouthWest 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 winter storm 148:32:00 SouthEast 2003-01-23 00:49 530.14 2.1204e+05 NaT winter storm NaN SouthEast 2003-02-07 21:15 289.4 1.4294e+05 2003-02-17 08:14 winter storm 226:59:00 West 2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10 equipment fault 00:26:00 MidWest 2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23 severe storm 65:05:00
Consulte también
readtimetable
|readtable
|detectImportOptions
|setvaropts
|setvartype
|preview
|head