Преобразование переменных таблицы или расписания в указанный тип данных
T2 = convertvars( преобразует указанные переменные в указанный тип данных. Входной аргумент T1,vars,dataType)T1 может быть таблицей или расписанием.
Пока можно указать dataType в качестве имени типа данных можно также указать его как дескриптор функции. В этом случае это дескриптор функции, которая преобразует или иным образом изменяет переменные, указанные vars. Аналогично, vars может содержать имена переменных или позиции переменных в T1или это может быть дескриптор функции, идентифицирующей переменные.
Считывание таблицы из электронной таблицы, содержащей данные об отключениях электроэнергии. Таблица содержит текстовые переменные, показывающие регион и причину для каждого отключения электроэнергии, переменные datetime, показывающие время простоя и восстановления, и числовые переменные, показывающие потерю мощности и количество затронутых клиентов. Просмотрите первые пять строк.
T1 = readtable('outages.csv');
head(T1,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' }
Преобразование переменных Region и Cause к категориальным переменным. Обратите внимание, что категориальные значения не отображаются в кавычках.
T2 = convertvars(T1,{'Region','Cause'},'categorical');
head(T2,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
Может быть удобно преобразовывать переменные в типы данных, которые предлагают различные функциональные возможности. Например, сейчас, когда T2.Region является категориальной переменной, можно использовать pie функция, чтобы составить круговую диаграмму отключений электроэнергии по регионам. Но вы не можете использовать T1.Region в качестве входного аргумента для pie, поскольку эта переменная содержит текст, а не категориальные данные.
pie(T2.Region)

Определите, какие переменные таблицы являются массивами datetime. Затем используйте datetime функция в качестве аргумента для convertvars для указания часового пояса и формата отображения.
Считайте данные об отключении питания в таблицу и просмотрите первые три строки.
T1 = readtable('outages.csv');
head(T1,3)ans=3×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'}
Массивы datetime в T1 не имеют установленных часовых поясов. Без указания имен или расположений переменных таблицы можно определить, какие переменные являются массивами datetime, с помощью дескриптора функции isdatetime функция. (Дескриптор функции - это переменная, которая сохраняет связь с функцией. Можно использовать дескриптор функции для передачи функции другой функции. Например, укажите @isdatetime для передачи дескриптора в convertvars.) Затем можно преобразовать все переменные datetime так, чтобы они имели часовой пояс и другой формат отображения. Этот метод полезен при преобразовании многих переменных таблицы, которые имеют одинаковый тип данных.
Позвоните в convertvars функция. Чтобы изменить часовой пояс и формат, укажите анонимную функцию, вызывающую datetime функции с помощью 'TimeZone' и 'Format' аргументы пары имя-значение. (Анонимная функция не хранится в файле программы. Это может быть полезно для функции, которая требует только краткого определения. В этом случае это также позволяет вызову datetime с несколькими входами, при прохождении convertvars функция, которая принимает только один вход, как convertvars требует.) Просмотрите первые три строки, показывающие изменение формата.
modifyTimeZoneAndFormat = @(x)(datetime(x,'TimeZone','UTC','Format','MMM dd, yyyy, HH:mm z')); T2 = convertvars(T1,@isdatetime,modifyTimeZoneAndFormat); head(T2,3)
ans=3×6 table
Region OutageTime Loss Customers RestorationTime Cause
_____________ _______________________ ______ __________ _______________________ ________________
{'SouthWest'} Feb 01, 2002, 12:18 UTC 458.98 1.8202e+06 Feb 07, 2002, 16:50 UTC {'winter storm'}
{'SouthEast'} Jan 23, 2003, 00:49 UTC 530.14 2.1204e+05 NaT {'winter storm'}
{'SouthEast'} Feb 07, 2003, 21:15 UTC 289.4 1.4294e+05 Feb 17, 2003, 08:14 UTC {'winter storm'}
T1 - Входная таблицаВходная таблица, заданная как таблица или расписание.
Если T1 является расписанием, то вы не можете использовать convertvars для преобразования времени строки, поскольку время строки не содержится в переменной расписания. Время строки - метаданные расписания.
vars - Переменные во входной таблице или расписанииПеременные во входной таблице или расписании, указанные как символьный вектор, массив ячеек символьных векторов, строковый массив, числовой массив, логический массив или дескриптор функции.
Если vars является дескриптором функции, то функция должна принять один входной аргумент, определить тип данных и вернуть логический скаляр. Например, используйте isnumeric для определения числовых переменных.
Пример: T2 = convertvars(T1,'Region','categorical') преобразует тип переменной Region.
Пример: T2 = convertvars(T1,[1,3:6],'string') преобразует переменные, заданные позицией, в массивы строк.
Пример: T2 = convertvars(T1,@isnumeric,'int32') преобразует все числовые переменные в 32-разрядные целые числа.
dataType - Тип данных преобразованных переменныхТип данных преобразованных переменных, указанный как символьный вектор, строковый скаляр или дескриптор функции.
Если dataType является дескриптором функции, то функция должна принять один входной аргумент и преобразовать его в другой тип данных. Например, string функция преобразует входной аргумент в строковый массив.
В таблице представлены имена многих распространенных типов данных.
'single' | Номер с одной точностью |
'double' | Число с двойной точностью |
'int8' | Целое число со знаком 8 бит |
'int16' | Знаковое 16-разрядное целое число |
'int32' | Подписанное 32-разрядное целое число |
'int64' | Подписанное 64-разрядное целое число |
'uint8' | Беззнаковое 8-разрядное целое число |
'uint16' | Беззнаковое 16-разрядное целое число |
'uint32' | Беззнаковое 32-разрядное целое число |
'uint64' | Беззнаковое 64-разрядное целое число |
'logical' | Логичный 1 (true) или 0 (false) |
'string' | Строковый массив |
'cell' | Массив ячеек |
'cellstr' | Массив ячеек символьных векторов |
'categorical' | Категориальный массив |
'datetime' | Массив Datetime |
'duration' | Массив длительности |
'calendarDuration' | Массив длительности календаря |
При указании 'char' как тип данных, то convertvars преобразует переменные в символьные массивы. Рекомендуется избегать создания переменных таблицы или расписания, которые являются массивами символов. Вместо этого рекомендуется преобразовать переменные в строковые массивы, категориальные массивы или массивы ячеек символьных векторов.
Пример: T2 = convertvars(T1,'OutageTime','datetime') преобразует тип переменной OutageTime.
Пример: T2 = convertvars(T1,'Region',@categorical) преобразует переменную с помощью дескриптора функции в categorical функция.
Примечания и ограничения по использованию:
Дескрипторы функций не поддерживаются.
Второй и третий входные аргументы (vars и dataType) должен быть постоянным.
Невозможно указать dataType как 'char'.
Дополнительные сведения см. в разделах Генерация кода для таблиц (кодер MATLAB) и Ограничения таблицы для генерации кода (кодер MATLAB).
addvars | mergevars | movevars | removevars | renamevars | splitvars
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.