convertvars

Преобразуйте переменные таблицы или расписания в заданный тип данных

Синтаксис

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 с аргументами в виде пар "имя-значение" 'Format' и 'TimeZone'. (Анонимная функция не сохранена в программном файле. Это может быть полезно для функции, которая требует только краткого определения. В этом случае это также позволяет вызов 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 является расписанием, то вы не можете использовать convertvars, чтобы преобразовать его времена строки, потому что времена строки не содержатся в переменной расписания. Времена строки являются метаданными расписания.

Переменные во входной таблице или расписании, заданном как вектор символа, массив ячеек из символьных векторов, массив строк, числовой массив, логический массив или указатель на функцию.

Если vars является указателем на функцию, то функция должна принять один входной параметр, идентифицировать его тип данных и возвратить логический скаляр. Например, используйте функцию isnumeric, чтобы обнаружить, какие переменные являются числовыми.

Пример: T2 = convertvars (T1, 'область', 'категориальная'), преобразовывает тип переменной области.

Пример: T2 = convertvars (T1, [1,3:6], 'строка') преобразовывает переменные, заданные положением к массивам строк.

Пример: T2 = convertvars (T1,@isnumeric, 'int32') преобразовывает все числовые переменные в 32-битные целые числа.

Тип данных конвертированных переменных, заданных как вектор символа, представляет в виде строки скаляр или указатель на функцию.

Если dataType является указателем на функцию, то функция должна принять один входной параметр и преобразовать его в другой тип данных. Например, функция string преобразовывает входной параметр в массив строк.

Таблица показывает имена многих типов общих данных.

единственныйНомер с одинарной точностью
'double'С двойной точностью номер
int88-битное целое число со знаком
int1616-битное целое число со знаком
int3232-битное целое число со знаком
int6464-битное целое число со знаком
uint88-битное целое число без знака
uint1616-битное целое число без знака
uint3232-битное целое число без знака
uint6464-битное целое число без знака
логическийЛогический 1 (true) или 0 (false)
СтрокаStringArray
ячейкаCellArray
cellstrМассив ячеек из символьных векторов
категориальныйКатегориальный массив
datetimeМассив datetime
длительностьМассив длительности
calendarDurationКалендарный массив длительности

Если вы задаете 'char' как тип данных, то convertvars преобразовывает переменные в символьные массивы. Лучшая практика состоит в том, чтобы не составлять переменные таблицы или расписания, которые являются символьными массивами. Вместо этого рассмотрите переменные преобразования к массивам строк, категориальным массивам или массивам ячеек из символьных векторов.

Пример: T2 = convertvars (T1, 'OutageTime', 'datetime') преобразовывает тип переменного OutageTime.

Пример: T2 = convertvars (T1, 'Region',@categorical) преобразовывает переменную с помощью указателя на функцию для категориальной функции.

Представленный в R2018b

Была ли эта тема полезной?