table

Табличный массив с именованными переменными, которые могут содержать различные типы

Описание

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

Чтобы индексировать в таблицу, используйте сглаженные круглые скобки () возвратить подтаблицу или фигурные скобки {} извлекать содержимое. Можно получить доступ к переменным и строкам с помощью имен. Для получения дополнительной информации об индексации чисел использования и имен, см. Доступ к данным в Таблицах.

Создание

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

Также можно составить таблицу, которая предоставляет пространство для переменных, значения которых заполнены в позже. Чтобы составить таблицу с предварительно выделенным местом для переменных, используйте table функция с 'Size' как первый входной параметр, аналогичный описанному ниже.

Описание

пример

T = table(var1,...,varN) составляет таблицу от входных переменных var1,...,varN. Переменные могут иметь различные размеры и типы данных, но все переменные должны иметь одинаковое число строк.

Если входные параметры являются переменными рабочей области, то table присваивает их имена как имена переменных в выходной таблице. В противном случае, table имена переменных присвоений формы 'Var1'..., 'VarN', где N количество переменных.

пример

T = table('Size',sz,'VariableTypes',varTypes) составляет таблицу и предварительно выделяет место для переменных, которые имеют типы данных, которые вы задаете. sz двухэлементный числовой массив, где sz(1) задает количество строк и sz(2) задает количество переменных. varTypes задает типы данных переменных.

пример

T = table(___,Name,Value) задает дополнительные входные параметры с помощью одного или нескольких аргументов пары "имя-значение". Например, можно задать имена переменных с помощью 'VariableNames' пара "имя-значение". Можно использовать этот синтаксис с любым из входных параметров предыдущих синтаксисов.

пример

T = table составляет пустую таблицу 0 на 0.

Входные параметры

развернуть все

Входные переменные в виде массивов с одинаковым числом строк. Входные переменные могут иметь различные размеры и различные типы данных.

Общие входные переменные являются числовыми массивами, логическими массивами, символьными массивами, массивами структур или массивами ячеек. Входные переменные также могут быть объектами, которые являются массивами. Такой массив должен поддержать индексацию формы var(index1,...,indexN), где index1 числовой или логический вектор, который соответствует строкам переменной var. Кроме того, массив должен реализовать обоих vertcat метод и size метод с dim аргумент.

Пример: table([1:4]',ones(4,3,2),eye(4,2)) составляет таблицу от переменных с четырьмя строками, но различные размеры.

Пример: table([1:3]',{'one';'two';'three'},categorical({'A';'B';'C'})) составляет таблицу от переменных с тремя строками, но различные типы данных.

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

Чтобы создать переменные только, без любых строк, задают 0 как первый элемент sz.

Пример: T = table('Size',[50 3],'VariableTypes',{'string','double','datetime'}) предварительно выделяет 50 строк для таблицы, которая содержит массив строк, двойной массив и массив datetime.

Пример: T = table('Size',[0 4],'VariableTypes',varTypes) задает нулевые строки и четыре переменные.

Типы данных предварительно выделенных переменных в виде массива ячеек из символьных векторов или массива строк. Количество типов задано varTypes должен равняться количеству переменных, заданных вторым элементом sz.

varTypes может содержать имена любых типов данных, включая имена, показанные в таблице.

Имя типа данных

Начальное значение в каждом элементе

'double' единственный

Дважды - или 0 с одинарной точностью

'doublenan', 'doubleNaN''singlenan', 'singleNaN'

Дважды - или NaN с одинарной точностью

'int8' int16 int32 int64

Подписанный 8-, 16-, 32-, или 64-битный целочисленный 0

'uint8' uint16 uint32 uint64

8-без знака, 16-, 32-, или 64-битный целочисленный 0

'logical'

0 ложь)

'categorical'

<undefined> категориальное значение

'datetime'

NaT datetime значение

'duration'

0 секунды, как duration значение

'calendarDuration'

0 дни, как calendarDuration значение

'string'

"" (1 на 1 представьте в виде строки без символов),

'cellstr'

{''} (ячейка с символьным массивом 0 на 0)

'cell'

{[]} (ячейка с двойным массивом 0 на 0)

'struct'

Скалярная структура без полей

'table'

Таблица без переменных

'timetable'

Расписание без переменных и NaT в течение времен строки

Для любого другого типа данных начальное значение является значением, используемым тем типом, или класс к "заполнению" отменил присвоение элементов массива.

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

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: T = table(rowTimes,X,Y,'VariableNames',{'Latitude','Longitude'}) составляет таблицу от входных массивов X и Y, и называет соответствующие табличные переменные Latitude и Longitude.

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

  • Количество имен в массиве должно равняться количеству табличных переменных.

  • table функционируйте также хранит имена переменных в VariableNames свойство таблицы.

  • Имена переменных могут иметь любые символы Unicode®, включая символы non-ASCII и пробелы.

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

  • Количество имен в массиве должно равняться количеству строк.

  • table функционируйте также хранит имена строки в RowNames свойство таблицы.

  • Имена строки могут иметь любые символы Unicode, включая символы non-ASCII и пробелы.

  • table функция удаляет любое продвижение или конечные пробельные символы с имен строки.

Пример: T = table([10;20;30],{'M';'F';'F'},'VariableNames',{'Age','Gender'},'RowNames',{'P1','P2','P3'}) составляет таблицу с обоими именами переменных и именами строки.

Начиная с R2021a

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

  • table функционируйте также хранит имена размерности в DimensionNames свойство таблицы.

  • Имена размерности могут иметь любые символы Unicode, включая символы non-ASCII и пробелы.

Перед R2021a можно указать, что размерность называет только путем установки DimensionNames свойство.

Свойства

развернуть все

Доступ к табличным свойствам метаданных

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

Можно возвратить сводные данные всех свойств метаданных с помощью синтаксиса tableNameсвойства.

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

Табличные метаданные

Размерность называет в виде двухэлементного массива ячеек из символьных векторов или двухэлементного массива строк.

  • Имена размерности могут иметь любые символы Unicode, включая символы non-ASCII и пробелы.

  • Если вы задаете это свойство с помощью массива строк, то оно преобразовано и сохранено как массив ячеек из символьных векторов.

Можно получить доступ к табличным данным с помощью двух имен размерности.

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

  • Если вы используете точечный синтаксис и имя второго измерения, то данные из всех переменных конкатенированы вместе в одном массиве, как будто вы индексировали в таблицу с помощью {:,:} синтаксис.

Пример

Составьте таблицу и отобразите ее имена размерности. Можно получить доступ к именам строки и данным с помощью имен размерности с точечным синтаксисом.

load patients
T = table(Age,Height,Weight,Systolic,Diastolic, ...
          'RowNames',LastName);
T.Properties.DimensionNames
ans = 1x2 cell
    {'Row'}    {'Variables'}

Доступ к именам строки с помощью первого имени размерности. Отобразите первые пять имен.

T.Row(1:5)
ans = 5x1 cell
    {'Smith'   }
    {'Johnson' }
    {'Williams'}
    {'Jones'   }
    {'Brown'   }

Доступ к данным с помощью имени второго измерения. Этот синтаксис эквивалентен T{:,:}.

T.Variables
ans = 100×5

    38    71   176   124    93
    43    69   163   109    77
    38    64   131   125    83
    40    67   133   117    75
    49    64   119   122    80
    46    68   142   121    70
    33    64   142   130    88
    40    68   180   115    82
    28    68   183   115    78
    31    66   132   118    86
      ⋮

Измените имена его размерностей с помощью Properties.DimensionNames свойство. Поменяв имена размерности, можно получить доступ к именам строки и данным с помощью синтаксисов T.Patient и T.Data соответственно.

T.Properties.DimensionNames = {'Patient','Data'};
T.Properties
ans = 
  TableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'Patient'  'Data'}
           VariableNames: {'Age'  'Height'  'Weight'  'Systolic'  'Diastolic'}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowNames: {100x1 cell}
        CustomProperties: No custom properties are set.
      Use addprop and rmprop to modify CustomProperties.

Строка называет в виде массива ячеек из символьных векторов или массива строк, элементы которого непусты и отличны. Если RowNames не пусто, затем количество имен строки должно равняться количеству строк в таблице.

  • Имена строки могут иметь любые символы Unicode, включая символы non-ASCII и пробелы.

  • Если вы присваиваете имена строки с продвижением или конечными пробельными символами, то MATLAB® удаляет их из имен строки.

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

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

  • Если вы задаете это свойство с помощью массива строк, то оно преобразовано и сохранено как массив ячеек из символьных векторов.

Пример

Составление таблицы. Затем добавьте имена строки и строки доступа их именами.

load patients
T = table(Gender,Age,Height,Weight,Smoker,Systolic,Diastolic);

Добавьте имена строки с помощью Properties.RowNames свойство. По умолчанию таблицы не имеют имен строки, но можно добавить их в любое время.

T.Properties.RowNames = LastName;
head(T,4)
ans=4×7 table
                  Gender      Age    Height    Weight    Smoker    Systolic    Diastolic
                __________    ___    ______    ______    ______    ________    _________

    Smith       {'Male'  }    38       71       176      true        124          93    
    Johnson     {'Male'  }    43       69       163      false       109          77    
    Williams    {'Female'}    38       64       131      false       125          83    
    Jones       {'Female'}    40       67       133      false       117          75    

Другой способ получить доступ к именам строки при помощи точечного синтаксиса с именем первой размерности таблицы. Отобразите первые пять имен строки.

T.Properties.DimensionNames
ans = 1x2 cell
    {'Row'}    {'Variables'}

T.Row(1:5)
ans = 5x1 cell
    {'Smith'   }
    {'Johnson' }
    {'Williams'}
    {'Jones'   }
    {'Brown'   }

Индексируйте в таблицу именами строки.

T({'Smith','Williams'},:)
ans=2×7 table
                  Gender      Age    Height    Weight    Smoker    Systolic    Diastolic
                __________    ___    ______    ______    ______    ________    _________

    Smith       {'Male'  }    38       71       176      true        124          93    
    Williams    {'Female'}    38       64       131      false       125          83    

Табличное описание в виде вектора символов или строкового скаляра. Это описание отображается при использовании summary функция.

Если вы задаете это свойство с помощью строкового скаляра, то оно преобразовано и сохранено как вектор символов.

Пример

Составление таблицы. Измените описание таблицы. Отобразите сводные данные результата.

load patients
T = table(Gender,Age,Height,Weight);
T.Properties.Description = 'Simulated patient data';
summary(T)
Description:  Simulated patient data

Variables:

    Gender: 100x1 cell array of character vectors

    Age: 100x1 double

        Values:

            Min          25   
            Median       39   
            Max          50   

    Height: 100x1 double

        Values:

            Min          60   
            Median       67   
            Max          72   

    Weight: 100x1 double

        Values:

            Min          111  
            Median     142.5  
            Max          202  

Дополнительная информация о таблице в виде массива. Можно присоединить данные любого вида к таблице с помощью этого свойства.

Пример

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

load patients
T = table(Gender,Age,Height,Weight,Smoker,Systolic,Diastolic);
formula = @(x) x.^2;
T.Properties.UserData = formula;
T.Properties
ans = 
  TableProperties with properties:

             Description: ''
                UserData: @(x)x.^2
          DimensionNames: {'Row'  'Variables'}
           VariableNames: {1x7 cell}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowNames: {}
        CustomProperties: No custom properties are set.
      Use addprop and rmprop to modify CustomProperties.

Переменные метаданные

Имена переменных в виде массива ячеек из символьных векторов или массива строк, элементы которого непусты и отличны. Количество имен должно равняться количеству переменных.

  • Имена переменных могут иметь любые символы Unicode, включая символы non-ASCII и пробелы.

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

  • Если вы задаете это свойство с помощью массива строк, то оно преобразовано и сохранено как массив ячеек из символьных векторов.

Пример

Составьте таблицу с именами переменных по умолчанию. Затем измените имена с помощью Properties.VariableNames свойство.

T = table({'M';'M';'F';'F';'F'},[38;43;38;40;49], ...
          [71;69;64;67;64],[176;163;131;133;119])
T=5×4 table
    Var1     Var2    Var3    Var4
    _____    ____    ____    ____

    {'M'}     38      71     176 
    {'M'}     43      69     163 
    {'F'}     38      64     131 
    {'F'}     40      67     133 
    {'F'}     49      64     119 

T.Properties.VariableNames = {'Gender','Age','Height','Weight'}
T=5×4 table
    Gender    Age    Height    Weight
    ______    ___    ______    ______

    {'M'}     38       71       176  
    {'M'}     43       69       163  
    {'F'}     38       64       131  
    {'F'}     40       67       133  
    {'F'}     49       64       119  

Основной способ отобразиться и изменить переменные состоит в том, чтобы получить доступ к ним по наименованию использующий точечный синтаксис.

T.Age
ans = 5×1

    38
    43
    38
    40
    49

T.Age(1) = 53
T=5×4 table
    Gender    Age    Height    Weight
    ______    ___    ______    ______

    {'M'}     53       71       176  
    {'M'}     43       69       163  
    {'F'}     38       64       131  
    {'F'}     40       67       133  
    {'F'}     49       64       119  

Описания переменной в виде массива ячеек из символьных векторов или массива строк, Это свойство может быть массивом пустой ячейки, который является значением по умолчанию. Если массив не пуст, то он должен содержать столько же элементов, сколько существуют переменные. Можно задать отдельный пустой символьный вектор или пустую строку для переменной, которая не имеет описания.

  • Описания переменной отображаются при использовании summary функция.

  • Если вы задаете это свойство с помощью массива строк, то оно преобразовано и сохранено как массив ячеек из символьных векторов.

Пример

Составление таблицы. Измените описания переменной. Отобразите сводные данные результата.

load patients
T = table(Gender,Age,Height,Weight,Smoker,Systolic,Diastolic);
T.Properties.VariableDescriptions = {'','','','', ...
                                     'Has the patient ever been a smoker', ...
                                     'Systolic Pressure','Diastolic Pressure'};
summary(T)
Variables:

    Gender: 100x1 cell array of character vectors

    Age: 100x1 double

        Values:

            Min          25   
            Median       39   
            Max          50   

    Height: 100x1 double

        Values:

            Min          60   
            Median       67   
            Max          72   

    Weight: 100x1 double

        Values:

            Min          111  
            Median     142.5  
            Max          202  

    Smoker: 100x1 logical

        Properties:
            Description:  Has the patient ever been a smoker
        Values:

            True        34   
            False       66   

    Systolic: 100x1 double

        Properties:
            Description:  Systolic Pressure
        Values:

            Min         109   
            Median      122   
            Max         138   

    Diastolic: 100x1 double

        Properties:
            Description:  Diastolic Pressure
        Values:

            Min           68  
            Median      81.5  
            Max           99  

Переменные модули в виде массива ячеек из символьных векторов или массива строк. Это свойство может быть массивом пустой ячейки, который является значением по умолчанию. Если массив не пуст, то он должен содержать столько же элементов, сколько существуют переменные. Можно задать отдельный пустой символьный вектор или пустую строку для переменной, которая не имеет модулей.

  • Переменные модули отображаются при использовании summary функция.

  • Если вы задаете это свойство с помощью массива строк, то оно преобразовано и сохранено как массив ячеек из символьных векторов.

Пример

Составление таблицы. Измените переменные модули. Отобразите сводные данные результата.

load patients
T = table(Gender,Age,Height,Weight,Smoker,Systolic,Diastolic);
T.Properties.VariableUnits = {'','Yrs','In','Lbs','','mm Hg','mm Hg'};
summary(T)
Variables:

    Gender: 100x1 cell array of character vectors

    Age: 100x1 double

        Properties:
            Units:  Yrs
        Values:

            Min          25   
            Median       39   
            Max          50   

    Height: 100x1 double

        Properties:
            Units:  In
        Values:

            Min          60   
            Median       67   
            Max          72   

    Weight: 100x1 double

        Properties:
            Units:  Lbs
        Values:

            Min          111  
            Median     142.5  
            Max          202  

    Smoker: 100x1 logical

        Values:

            True        34   
            False       66   

    Systolic: 100x1 double

        Properties:
            Units:  mm Hg
        Values:

            Min         109   
            Median      122   
            Max         138   

    Diastolic: 100x1 double

        Properties:
            Units:  mm Hg
        Values:

            Min           68  
            Median      81.5  
            Max           99  

Состояние как непрерывные или дискретные переменные в виде массива ячеек из символьных векторов или массива строк.

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

Пользовательские метаданные

Индивидуально настраиваемые метаданные таблицы и ее переменных в виде CustomProperties объект.

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

  • Чтобы добавить свойства для индивидуально настраиваемых метаданных к таблице, используйте addprop функция.

  • Чтобы получить доступ или изменить настроенные метаданные, используйте синтаксис tableNameсвойства. Custom Properties.. В этом синтаксисе, PropertyName имя, которое вы выбрали, когда вы добавили то использование свойства addprop.

  • Чтобы удалить свойства, используйте rmprop функция.

Примечание: можно добавить или удалить только свойства для индивидуально настраиваемого использования метаданных addprop и rmprop. Вы не можете добавить или удалить свойства tableNameсвойства объект.

Пример

Составление таблицы.

load patients
T = table(Gender,Age,Height,Weight,Smoker,Systolic,Diastolic);

Добавьте свойства, которые могут содержать индивидуально настраиваемые метаданные о таблице и ее переменных. В этом примере метаданные являются именами инструментов, true и false значения, указывающие, должны ли переменные быть построены, и имя выходного файла. Чтобы добавить свойства, используйте addprop функция.

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

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

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

Присвойте значения индивидуально настраиваемым метаданным с помощью точечного синтаксиса. Когда вы присваиваете массив текстовых значений к индивидуально настраиваемым метаданным, лучшая практика состоит в том, чтобы использовать массив строк, не массив ячеек из символьных векторов. Если свойство CustomProperties массив ячеек из символьных векторов, затем нет никакого механизма, чтобы предотвратить вас от более поздних нетекстовых значений присвоения как элементы массива ячеек.

T.Properties.CustomProperties.Instrument = ["","","height rod","scale","","blood pressure cuff","blood pressure cuff"];
T.Properties.CustomProperties.ToPlot = [false false true true false true true];
T.Properties.CustomProperties.OutputFile = 'patientData.csv';
T.Properties
ans = 
  TableProperties with properties:

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

   Custom Properties (access using t.Properties.CustomProperties.<name>):
              OutputFile: 'patientData.csv'
              Instrument: [1x7 string]
                  ToPlot: [0 0 1 1 0 1 1]

Удалите OutputFile свойство от T.

T = rmprop(T,'OutputFile');
T.Properties
ans = 
  TableProperties with properties:

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

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

Примеры

свернуть все

Храните данные о группе пациентов в таблице. Можно выполнить вычисления и сохранить результаты в той же таблице. Кроме того, можно аннотировать таблицу, чтобы описать работу и переменные таблицы.

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

LastName = {'Sanchez';'Johnson';'Li';'Diaz';'Brown'};
Age = [38;43;38;40;49];
Smoker = logical([1;0;1;0;1]);
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];

Составьте таблицу, T, как контейнер для переменных рабочей области. table функционируйте использует имена переменных рабочей области в качестве имен табличных переменных в T. Табличная переменная может иметь несколько столбцов. Например, BloodPressure переменная в T 5 2 массив.

T = table(LastName,Age,Smoker,Height,Weight,BloodPressure)
T=5×6 table
     LastName      Age    Smoker    Height    Weight    BloodPressure
    ___________    ___    ______    ______    ______    _____________

    {'Sanchez'}    38     true        71       176       124     93  
    {'Johnson'}    43     false       69       163       109     77  
    {'Li'     }    38     true        64       131       125     83  
    {'Diaz'   }    40     false       67       133       117     75  
    {'Brown'  }    49     true        64       119       122     80  

Можно использовать точечную индексацию, чтобы получить доступ к табличным переменным. Например, вычислите среднюю высоту пациентов, использующих значения в T.Height.

meanHeight = mean(T.Height)
meanHeight = 67

Вычислите индекс массы тела (BMI) и добавьте его как новую табличную переменную. Также можно добавить и назвать табличные переменные за один шаг, с помощью точечного синтаксиса.

T.BMI = (T.Weight*0.453592)./(T.Height*0.0254).^2
T=5×7 table
     LastName      Age    Smoker    Height    Weight    BloodPressure     BMI  
    ___________    ___    ______    ______    ______    _____________    ______

    {'Sanchez'}    38     true        71       176       124     93      24.547
    {'Johnson'}    43     false       69       163       109     77      24.071
    {'Li'     }    38     true        64       131       125     83      22.486
    {'Diaz'   }    40     false       67       133       117     75      20.831
    {'Brown'  }    49     true        64       119       122     80      20.426

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

T.Properties.Description = 'Patient data, including body mass index (BMI) calculated using Height and Weight';
T.Properties
ans = 
  TableProperties with properties:

             Description: 'Patient data, including body mass index (BMI) calculated using Height and Weight'
                UserData: []
          DimensionNames: {'Row'  'Variables'}
           VariableNames: {1x7 cell}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowNames: {}
        CustomProperties: No custom properties are set.
      Use addprop and rmprop to modify CustomProperties.

Доступ ко всем данным из таблицы как матрица, с помощью имени второго измерения таблицы.

Составьте таблицу, которая имеет пять строк данных о группе пациентов.

Age = [38;43;38;40;49];
Smoker = logical([1;0;1;0;1]);
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];

T = table(Age,Smoker,Height,Weight,BloodPressure)
T=5×5 table
    Age    Smoker    Height    Weight    BloodPressure
    ___    ______    ______    ______    _____________

    38     true        71       176       124     93  
    43     false       69       163       109     77  
    38     true        64       131       125     83  
    40     false       67       133       117     75  
    49     true        64       119       122     80  

Отобразите имена табличных размерностей с помощью DimensionNames свойство. Именем по умолчанию второго измерения является Variables.

T.Properties.DimensionNames
ans = 1x2 cell
    {'Row'}    {'Variables'}

Доступ к табличным данным как матрица с помощью синтаксиса T.Variables. Этот синтаксис эквивалентен доступу ко всему содержимому с помощью изогнутого синтаксиса фигурной скобки, T{:,:}. Если табличные данные не могут быть конкатенированы в матрицу, то сообщение об ошибке повышено.

T.Variables
ans = 5×6

    38     1    71   176   124    93
    43     0    69   163   109    77
    38     1    64   131   125    83
    40     0    67   133   117    75
    49     1    64   119   122    80

Переименуйте второе измерение. Если вы меняете имя, то можно использовать новое имя, чтобы получить доступ к данным.

T.Properties.DimensionNames{2} = 'PatientData';
T.PatientData
ans = 5×6

    38     1    71   176   124    93
    43     0    69   163   109    77
    38     1    64   131   125    83
    40     0    67   133   117    75
    49     1    64   119   122    80

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

sz = [4 3];
varTypes = {'double','datetime','string'};
T = table('Size',sz,'VariableTypes',varTypes)
T=4×3 table
    Var1    Var2      Var3   
    ____    ____    _________

     0      NaT     <missing>
     0      NaT     <missing>
     0      NaT     <missing>
     0      NaT     <missing>

Чтобы задать имена для переменных, используйте 'VariableNames' аргумент пары "имя-значение".

varNames = {'Temperature','Time','Station'};
T2 = table('Size',sz,'VariableTypes',varTypes,'VariableNames',varNames)
T2=4×3 table
    Temperature    Time     Station 
    ___________    ____    _________

         0         NaT     <missing>
         0         NaT     <missing>
         0         NaT     <missing>
         0         NaT     <missing>

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

T2(1,:) = {75,datetime('now'),"S1"};
T2(2,:) = {68,datetime('now')+1,"S2"}
T2=4×3 table
    Temperature            Time             Station 
    ___________    ____________________    _________

        75         23-Mar-2021 16:46:44    "S1"     
        68         24-Mar-2021 16:46:44    "S2"     
         0                          NaT    <missing>
         0                          NaT    <missing>

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

Составьте таблицу от массивов. Чтобы задать имена табличной переменной, используйте 'VariableNames' аргумент пары "имя-значение". Например, можно использовать 'VariableNames' задавать имена, когда другие входные параметры не являются переменными рабочей области.

T = table(categorical({'M';'F';'M'}),[45;32;34],...
          {'NY';'CA';'MA'},logical([1;0;0]),...
          'VariableNames',{'Gender','Age','State','Vote'})
T=3×4 table
    Gender    Age    State     Vote 
    ______    ___    ______    _____

      M       45     {'NY'}    true 
      F       32     {'CA'}    false
      M       34     {'MA'}    false

Составьте таблицу с именами состояния как имена строки. Можно задать обоих 'VariableNames' и 'RowNames' пары "имя-значение" при использовании table функция.

T = table(categorical({'M';'F';'M'}),[45;32;34],logical([1;0;0]),...
          'VariableNames',{'Gender','Age','Vote'},...
          'RowNames',{'NY';'CA';'MA'})
T=3×3 table
          Gender    Age    Vote 
          ______    ___    _____

    NY      M       45     true 
    CA      F       32     false
    MA      M       34     false

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

Создайте массивы, содержащие данные о пациентах.

LastName = {'Sanchez';'Johnson';'Lee';'Diaz';'Brown'};
Age = [38;43;38;40;49];
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];

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

T = table(Age,Weight,Height,'RowNames',LastName)
T=5×3 table
               Age    Weight    Height
               ___    ______    ______

    Sanchez    38      176        71  
    Johnson    43      163        69  
    Lee        38      131        64  
    Diaz       40      133        67  
    Brown      49      119        64  

Поскольку строки имеют имена строки, можно индексировать в строки T по наименованию.

T('Lee',:)
ans=1×3 table
           Age    Weight    Height
           ___    ______    ______

    Lee    38      131        64  

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

T({'Lee','Brown'},:)
ans=2×3 table
             Age    Weight    Height
             ___    ______    ______

    Lee      38      131        64  
    Brown    49      119        64  

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

T.Row
ans = 5x1 cell
    {'Sanchez'}
    {'Johnson'}
    {'Lee'    }
    {'Diaz'   }
    {'Brown'  }

Поменяйте имя первой размерности. Если вы меняете имя, то можно получить доступ к именам строки с помощью нового имени.

T.Properties.DimensionNames{1} = 'LastNames';
T.LastNames
ans = 5x1 cell
    {'Sanchez'}
    {'Johnson'}
    {'Lee'    }
    {'Diaz'   }
    {'Brown'  }

Начиная в R2017a, можно создать строки с помощью двойных кавычек и добавить строковые массивы как табличные переменные.

FlightNum = [1261;547;3489];
Customer = ["Jones";"Brown";"Smith"];
Date = datetime(2016,12,20:22)';
Rating = categorical(["Good";"Poor";"Fair"]);
Comment = ["Flight left on time, not crowded";...
           "Late departure, ran out of dinner options";...
           "Late, but only by half an hour. Otherwise fine."];
T = table(FlightNum,Customer,Date,Rating,Comment)
T=3×5 table
    FlightNum    Customer       Date        Rating                         Comment                     
    _________    ________    ___________    ______    _________________________________________________

      1261       "Jones"     20-Dec-2016     Good     "Flight left on time, not crowded"               
       547       "Brown"     21-Dec-2016     Poor     "Late departure, ran out of dinner options"      
      3489       "Smith"     22-Dec-2016     Fair     "Late, but only by half an hour. Otherwise fine."

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

Customer = cellstr(Customer);
T = table(FlightNum,Date,Rating,Comment,'RowNames',Customer)
T=3×4 table
             FlightNum       Date        Rating                         Comment                     
             _________    ___________    ______    _________________________________________________

    Jones      1261       20-Dec-2016     Good     "Flight left on time, not crowded"               
    Brown       547       21-Dec-2016     Poor     "Late departure, ran out of dinner options"      
    Smith      3489       22-Dec-2016     Fair     "Late, but only by half an hour. Otherwise fine."

Создайте переменные рабочей области, содержащие общие количества снегопада в различные даты в трех местах. Эти переменные являются векторами-строками.

Date = {'12/25/11','1/2/12','1/23/12','2/7/12','2/15/12'};
location1 = [20 5 13 0 17];
location2 = [18 9 21 5 12];
location3 = [26 10 16 3 15];

Один способ составить таблицу от этих переменных состоит в том, чтобы вызвать table функция с синтаксисом T = table(Date',location1',location2',location3'). Поскольку переменные рабочей области являются векторами-строками, необходимо транспонировать их, чтобы поместить их в таблицу как данные в столбцах. Поэтому входные параметры являются выражениями, не простыми переменными. В результате table создает T с именами переменных по умолчанию Var1, Var2, Var3, и Var4. Можно присвоить больше понятных имен к T.Properties.VariableNames после того, как вы создаете T. Но, может быть более удобно составить пустую таблицу, и затем добавить переменные по одному с новыми именами.

Составьте пустую таблицу. Транспонируйте переменные рабочей области и добавьте их в таблицу как вектор-столбцы. Как часть присвоения каждой переменной рабочей области в T, обеспечьте понятное имя для табличной переменной.

T = table;
T.Date = Date';
T.Natick = location1';
T.Boston = location2';
T.Worcester = location3'
T=5×4 table
        Date        Natick    Boston    Worcester
    ____________    ______    ______    _________

    {'12/25/11'}      20        18         26    
    {'1/2/12'  }       5         9         10    
    {'1/23/12' }      13        21         16    
    {'2/7/12'  }       0         5          3    
    {'2/15/12' }      17        12         15    

Начиная в R2019b, можно задать имена табличной переменной, которые не являются допустимыми идентификаторами MATLAB®. Такие имена переменных могут включать пробелы, символы non-ASCII, и могут иметь любой символ как начальный символ. Когда вы получаете доступ к такому имени переменной, заключаете его кавычки.

Составьте таблицу, которая хранит данные о группе пациентов. Начните с их возрастов и состояния как курильщики.

Age = [38;43;38;40;49];
Smoker = logical([1;0;1;0;1]);
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];
T = table(Age,Smoker)
T=5×2 table
    Age    Smoker
    ___    ______

    38     true  
    43     false 
    38     true  
    40     false 
    49     true  

Добавьте показания кровяного давления с именем переменной '29-May-2019 Blood Pressure Reading'. Можно использовать точечный синтаксис, чтобы добавить или получить доступ к переменной. Поскольку ее имя не является допустимым идентификатором MATLAB, используйте круглые скобки и кавычки с точечным синтаксисом.

T.('29-May-2019 Blood Pressure Reading') = BloodPressure
T=5×3 table
    Age    Smoker    29-May-2019 Blood Pressure Reading
    ___    ______    __________________________________

    38     true                  124     93            
    43     false                 109     77            
    38     true                  125     83            
    40     false                 117     75            
    49     true                  122     80            

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

T.Height = Height;
T.Weight = Weight
T=5×5 table
    Age    Smoker    29-May-2019 Blood Pressure Reading    Height    Weight
    ___    ______    __________________________________    ______    ______

    38     true                  124     93                  71       176  
    43     false                 109     77                  69       163  
    38     true                  125     83                  64       131  
    40     false                 117     75                  67       133  
    49     true                  122     80                  64       119  

Индексируйте в T использование имен переменных.

T(:,{'Age','Smoker','29-May-2019 Blood Pressure Reading'})
ans=5×3 table
    Age    Smoker    29-May-2019 Blood Pressure Reading
    ___    ______    __________________________________

    38     true                  124     93            
    43     false                 109     77            
    38     true                  125     83            
    40     false                 117     75            
    49     true                  122     80            

Ограничения

  • Используйте одинарные кавычки для этих входных имен:

    • 'DimensionNames' (начиная с R2021a)

    • 'RowNames'

    • 'Size'

    • 'VariableTypes'

    • 'VariableNames'

    Чтобы избежать беспорядка с вводами переменной, не используйте дважды заключенные в кавычки строковые скаляры (такие как "RowNames") для этих имен.

Советы

  • Для списка функций, которые принимают или возвращают таблицы, см. Таблицы.

Вопросы совместимости

развернуть все

Поведение изменяется в R2019b

Поведение изменяется в R2019b

Поведение изменяется в R2021a

Расширенные возможности

Введенный в R2013b