Преобразуйте переменные таблицы или расписания в заданный тип данных
T2 = convertvars(T1,vars,dataType)
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
является указателем на функцию, то функция должна принять один входной параметр, идентифицировать его тип данных и возвратить логический скаляр. Например, используйте функцию isnumeric
, чтобы обнаружить, какие переменные являются числовыми.
Пример: T2 = convertvars(T1,'Region','categorical')
преобразовывает тип переменной Region
.
Пример: T2 = convertvars(T1,[1,3:6],'string')
преобразовывает переменные, заданные положением к строковым массивам.
Пример: T2 = convertvars(T1,@isnumeric,'int32')
преобразовывает все числовые переменные в 32-битные целые числа.
тип данных
Тип данных конвертированных переменныхТип данных конвертированных переменных, заданных как вектор символов, представляет в виде строки скаляр или указатель на функцию.
Если 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' | StringArray |
'cell' | CellArray |
'cellstr' | Массив ячеек из символьных векторов |
'categorical' | Категориальный массив |
'datetime' | Массив datetime |
'duration' | Массив длительности |
'calendarDuration' | Календарный массив длительности |
Если вы задаете 'char'
как тип данных, то convertvars
преобразовывает переменные в символьные массивы. Лучшая практика состоит в том, чтобы не составлять переменные таблицы или расписания, которые являются символьными массивами. Вместо этого рассмотрите переменные преобразования к строковым массивам, категориальным массивам или массивам ячеек из символьных векторов.
Пример: T2 = convertvars(T1,'OutageTime','datetime')
преобразовывает тип переменной OutageTime
.
Пример: T2 = convertvars(T1,'Region',@categorical)
преобразовывает переменную с помощью указателя на функцию для функции categorical
.
addvars
| mergevars
| movevars
| removevars
| splitvars
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.