Добавьте пользовательские свойства в таблицы и расписания

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

Все таблицы и расписания имеют свойства, которые содержат метаданные о них или их переменных. Можно получить доступ к этим свойствам через T.Properties объект, где T имя таблицы или расписания. Например, T.Properties.VariableNames возвращает массив ячеек, содержащий имена переменных T.

Свойства вы получаете доступ через T.Properties часть определений table и timetable типы данных. Вы не можете добавить или удалить эти предопределенные свойства. Но начиная в R2018b, можно добавить и удалить собственные свойства путем изменения T.Properties.CustomProperties объект таблицы или расписания.

Добавление свойств

Считайте данные об отключении электроэнергии в таблицу. Сортировка его с помощью первой переменной, которая содержит даты и времена, OutageTime. Затем отобразите первые три строки.

T = readtable('outages.csv');
T = sortrows(T,'OutageTime');
head(T,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'}
    {'MidWest'  }    2002-03-05 17:53    96.563    2.8666e+05    2002-03-10 14:41    {'wind'        }
    {'MidWest'  }    2002-03-16 06:18    186.44    2.1275e+05    2002-03-18 23:23    {'severe storm'}

Отобразите его свойства. Это свойства, которые имеют общего все таблицы. Обратите внимание на то, что существует также CustomProperties объект, но что по умолчанию это не имеет никаких свойств.

T.Properties
ans = 
  TableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'Row'  'Variables'}
           VariableNames: {1x6 cell}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowNames: {}
        CustomProperties: No custom properties are set.
      Use addprop and rmprop to modify CustomProperties.

Чтобы добавить пользовательские свойства, используйте addprop функция. Задайте имена свойств. Для каждого свойства также задайте, имеет ли оно метаданные для целой таблицы (похожий на Description свойство) или для его переменных (похожий на VariableNames свойство. Если свойство имеет переменные метаданные, то его значение должно быть вектором, длина которого равна количеству переменных.

Добавьте пользовательские свойства, которые содержат имя выходного файла, тип файла и индикаторы который переменные построить. Лучшая практика состоит в том, чтобы присвоить входную таблицу как выходной аргумент addprop, так, чтобы пользовательские свойства были частью той же таблицы. Укажите, что имя выходного файла и тип файла являются табличными метаданными с помощью 'table' опция. Укажите, что индикаторы графика являются переменными метаданными с помощью 'variable' опция.

T = addprop(T,{'OutputFileName','OutputFileType','ToPlot'}, ...
              {'table','table','variable'});
T.Properties
ans = 
  TableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'Row'  'Variables'}
           VariableNames: {1x6 cell}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowNames: {}

   Custom Properties (access using t.Properties.CustomProperties.<name>):
          OutputFileName: []
          OutputFileType: []
                  ToPlot: []

Установите и доступ к значениям пользовательских свойств

Когда вы добавляете пользовательские свойства с помощью addprop, их значения являются пустыми массивами по умолчанию. Можно установить и получить доступ к значениям пользовательских свойств с помощью точечного синтаксиса.

Определите имя выходного файла и тип. Эти свойства содержат метаданные для таблицы. Затем присвойте логический массив ToPlot свойство. Это свойство содержит метаданные для переменных. В этом примере, элементах значения ToPlot свойством является true для каждой переменной, которая будет включена в график и false для каждой переменной, которая будет исключена.

T.Properties.CustomProperties.OutputFileName = 'outageResults';
T.Properties.CustomProperties.OutputFileType = '.mat';
T.Properties.CustomProperties.ToPlot = [false false true true true false];
T.Properties
ans = 
  TableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'Row'  'Variables'}
           VariableNames: {1x6 cell}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowNames: {}

   Custom Properties (access using t.Properties.CustomProperties.<name>):
          OutputFileName: 'outageResults'
          OutputFileType: '.mat'
                  ToPlot: [0 0 1 1 1 0]

Постройте переменные из T в совмещенном графике с помощью stackedplot функция. Построить только Loss, Customers, и RestorationTime значения, используйте ToPlot пользовательское свойство как второй входной параметр.

stackedplot(T,T.Properties.CustomProperties.ToPlot);

Figure contains an object of type stackedplot.

Когда вы перемещаете или удаляете табличные переменные, и предопределенные и пользовательские свойства переупорядочиваются так, чтобы их значения соответствовали тем же переменным. В этом примере, значениях ToPlot пользовательское свойство остается выровненным с переменными, отмеченными для графического вывода, так же, как значения VariableNames предопределенное свойство остается выровненным.

Удалите Customers переменная и отображение свойства.

T.Customers = [];
T.Properties
ans = 
  TableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'Row'  'Variables'}
           VariableNames: {1x5 cell}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowNames: {}

   Custom Properties (access using t.Properties.CustomProperties.<name>):
          OutputFileName: 'outageResults'
          OutputFileType: '.mat'
                  ToPlot: [0 0 1 1 0]

Преобразуйте таблицу в расписание, с помощью времен отключения электричества в качестве времен строки. Переместите Region в конец таблицы и RestorationTime перед первой переменной, с помощью movevars функция. Обратите внимание на то, что свойства переупорядочиваются соответственно. RestorationTime и Loss переменные все еще имеют индикаторы для включения в график.

T = table2timetable(T);
T = movevars(T,'Region','After','Cause');
T = movevars(T,'RestorationTime','Before',1);
T.Properties
ans = 
  TimetableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'OutageTime'  'Variables'}
           VariableNames: {'RestorationTime'  'Loss'  'Cause'  'Region'}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowTimes: [1468x1 datetime]
               StartTime: 2002-02-01 12:18
              SampleRate: NaN
                TimeStep: NaN

   Custom Properties (access using t.Properties.CustomProperties.<name>):
          OutputFileName: 'outageResults'
          OutputFileType: '.mat'
                  ToPlot: [1 1 0 0]

Удалите свойства

Можно удалить любые из пользовательских свойств таблицы с помощью rmprop функция. Однако вы не можете использовать его, чтобы удалить предопределенные свойства из T.Properties, потому что те свойства являются частью определения table тип данных.

Удалите OutputFileName и OutputFileType custom Properties. Отобразите остающиеся свойства таблиц.

T = rmprop(T,{'OutputFileName','OutputFileType'});
T.Properties
ans = 
  TimetableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'OutageTime'  'Variables'}
           VariableNames: {'RestorationTime'  'Loss'  'Cause'  'Region'}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowTimes: [1468x1 datetime]
               StartTime: 2002-02-01 12:18
              SampleRate: NaN
                TimeStep: NaN

   Custom Properties (access using t.Properties.CustomProperties.<name>):
                  ToPlot: [1 1 0 0]

Смотрите также

| | | | | | | |

Похожие темы