Преобразуйте переменные таблицы или расписания в заданный тип данных
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
для преобразования времени ее строки, поскольку время строки не содержится в переменной timetable. Время ввода строк - метаданные расписания.
vars
- Переменные в входной таблице или расписанииПеременные в таблице входы или timetable, заданные как вектор символов, массив ячеек из векторов символов, строковых массивов, числового массива, логического массива или указателя на функцию.
Если 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
преобразует переменные в символьные массивы. Лучшая практика состоит в том, чтобы избегать создания переменных table или timetable, которые являются символьными массивами. Вместо этого рассмотрите преобразование переменных в строковые массивы, категориальные массивы или массивы ячеек векторов символов.
Пример: T2 = convertvars(T1,'OutageTime','datetime')
преобразует тип переменной OutageTime
.
Пример: T2 = convertvars(T1,'Region',@categorical)
преобразует переменную с помощью указателя на функцию в categorical
функция.
Указания и ограничения по применению:
Указатели на функцию не поддерживаются.
Второй и третий входные параметры (vars
и dataType
) должна быть постоянной.
Вы не можете задать dataType
как 'char'
.
Для получения дополнительной информации смотрите Генерация кода для таблиц (MATLAB Coder) и Ограничения таблицы для генерации кода (MATLAB Coder).
addvars
| mergevars
| movevars
| removevars
| renamevars
| splitvars
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.