Этот пример показывает, как использовать функцию readtable, чтобы импортировать смешанные текстовые и числовые данные в таблицу, задать типы данных для переменных, и затем добавить новую переменную к таблице.
Файл примера, outages.csv, содержит данные, представляющие отключения электричества электроэнергетики в США. Первые несколько строк файла:
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
Импортируйте данные с помощью readtable и отобразите первые пять строк. Функция readtable автоматически обнаруживает разделитель и типы переменных.
T = readtable('outages.csv'); head(T,5) % show first 5 rows of table
ans=5×6 table
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'
Задайте типы данных переменных перед импортом
Корректировка типов данных переменных к соответствующим типам данных MATLAB, основанная на типах переменных в вашем файле, может быть полезной. Например, первый и шестой столбцы inoutages.csv являются категориальными. Обозначение этих двух столбцов как categorical массивы позволит использовать функции MATLAB для обработки категориальных данных.
Определяйте и задайте типы данных переменных одним из этих способов:
Задайте пару "имя-значение" Format в readtable
Установите свойство VariableTypes настроек импорта для файла
Используйте пару "имя-значение" Format, чтобы задать типы данных переменных, считать данные и отобразить первые пять строк. В части %{yyyy-MM-dd HH:mm}D спецификатора formatSpec текст между фигурными скобками описывает формат данных о дате и времени. Значения, заданные в Format, определяют:
Первые и последние столбцы в файле как категориальные данные
Вторые и пятые колонны как отформатированная дата и данные времени
Третьи и четвертые столбцы как значения с плавающей точкой
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)
ans=5×6 table
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
Также задайте типы данных для переменных при помощи функции setvartype настроек импорта. Во-первых, создайте объект настроек импорта для файла. Файл данных содержит различные типы переменных. Определяйте первые и последние переменные как массивы categorical, вторые и пятые переменные как массивы datetime и остающиеся переменные как double.
opts = detectImportOptions('outages.csv'); varNames = opts.VariableNames ; % variable names varTypes = {'categorical','datetime','double',... 'double','datetime','categorical'}; opts = setvartype(opts,varNames,varTypes);
Импортируйте данные с помощью readtable с opts, и затем отобразите первые пять строк.
T = readtable('outages.csv',opts);
head(T,5) ans=5×6 table
Region OutageTime Loss Customers RestorationTime Cause
_________ ____________________ ______ __________ ____________________ _______________
SouthWest 01-Feb-2002 12:18:00 458.98 1.8202e+06 07-Feb-2002 16:50:00 winter storm
SouthEast 23-Jan-2003 00:49:00 530.14 2.1204e+05 NaT winter storm
SouthEast 07-Feb-2003 21:15:00 289.4 1.4294e+05 17-Feb-2003 08:14:00 winter storm
West 06-Apr-2004 05:44:00 434.81 3.4037e+05 06-Apr-2004 06:10:00 equipment fault
MidWest 16-Mar-2002 06:18:00 186.44 2.1275e+05 18-Mar-2002 23:23:00 severe storm
Добавьте новую переменную к таблице
Таблица T содержит OutageTime и RestorationTime. Вычислите длительность каждого электрического отключения электричества и добавьте эти данные к таблице.
T.Duration = T.RestorationTime - T.OutageTime; head(T,5)
ans=5×7 table
Region OutageTime Loss Customers RestorationTime Cause Duration
_________ ____________________ ______ __________ ____________________ _______________ _________
SouthWest 01-Feb-2002 12:18:00 458.98 1.8202e+06 07-Feb-2002 16:50:00 winter storm 148:32:00
SouthEast 23-Jan-2003 00:49:00 530.14 2.1204e+05 NaT winter storm NaN
SouthEast 07-Feb-2003 21:15:00 289.4 1.4294e+05 17-Feb-2003 08:14:00 winter storm 226:59:00
West 06-Apr-2004 05:44:00 434.81 3.4037e+05 06-Apr-2004 06:10:00 equipment fault 00:26:00
MidWest 16-Mar-2002 06:18:00 186.44 2.1275e+05 18-Mar-2002 23:23:00 severe storm 65:05:00
detectImportOptions | head | preview | readtable | readtimetable | setvaropts | setvartype