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

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

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

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

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

T.Variables горизонтально конкатенирует все табличные переменные в массив. T.Variables эквивалентен T{:,:}.

Чтобы преобразовать в нижний индекс в таблицу и избранные переменные заданного типа, используйте функцию vartype.

Сводные данные табличных методов индексирования

Рассмотрите таблицу, T.

Тип индексацииРезультатСинтаксис'Строки' Переменные
Круглые скобкитаблицаT(rows,vars)

Одна или несколько строк, заданных rows

Одна или несколько переменных, заданных vars

Фигурные скобкиизвлеченные данныеT{rows,vars}

Одна или несколько строк, заданных rows

Одна или несколько переменных, заданных vars

Точечная индексацияизвлеченные данные

T.var

T.(varindex)

Все строки

Одна переменная, заданная var (имя) или varindex (номер)

Точечная индексацияизвлеченные данные

T.var(rows)

Одна или несколько строк, заданных rows

Одна переменная, заданная var (имя)

Свойство переменныхизвлеченные данные

T.Variables

Все строки

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

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

S = vartype(type);

T(rows,S)

Одна или несколько строк, заданных rows

Одна или несколько переменных заданного type (например, 'numeric')

Индексирование типом переменнойизвлеченные данные

S = vartype(type);

T{rows,S}

Одна или несколько строк, заданных rows

Одна или несколько переменных заданного type (например, 'numeric')

Как задать строки к доступу

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

Логическое выражение может содержать фигурные скобки или индексацию точки, чтобы извлечь данные, от которых можно задать подмножество строк. Например, rows = T.Var2>0 возвращает логический массив с логическим true (1) для строк, где значение в переменной Var2 больше, чем нуль.

Как задать переменные к доступу

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

При использовании точечной индексации необходимо задать одну переменную для доступа. Для одного имени переменной используйте T.var. Для одного переменного индекса, заданного как положительное целое число, T.(varindex) использования.

Составление таблицы от подмножества большей таблицы

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

Загрузка демонстрационных данных

Загрузите демонстрационные данные пациентов и составьте таблицу. Используйте уникальные идентификаторы в LastName как имена строки.

load patients

patients = table(Age,Gender,Height,Weight,Smoker,...
    'RowNames',LastName);

Таблица, patients, содержит 100 строк и 5 переменных.

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

summary(patients)
Variables:

    Age: 100x1 double

        Values:

            Min        25  
            Median     39  
            Max        50  

    Gender: 100x1 cell array of character vectors

    Height: 100x1 double

        Values:

            Min          60   
            Median       67   
            Max          72   

    Weight: 100x1 double

        Values:

            Min          111  
            Median     142.5  
            Max          202  

    Smoker: 100x1 logical

        Values:

            True        34   
            False       66   

Индексируйте Используя числовые индексы

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

T1 = patients(1:5,:)
T1=5×5 table
                Age     Gender     Height    Weight    Smoker
                ___    ________    ______    ______    ______

    Smith       38     'Male'        71       176      true  
    Johnson     43     'Male'        69       163      false 
    Williams    38     'Female'      64       131      false 
    Jones       40     'Female'      67       133      false 
    Brown       49     'Female'      64       119      false 

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

Индексируйте Используя имена

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

T2 = patients({'Adams','Brown'},:)
T2=2×5 table
             Age     Gender     Height    Weight    Smoker
             ___    ________    ______    ______    ______

    Adams    48     'Female'      66       137      false 
    Brown    49     'Female'      64       119      false 

T2 2 5 таблица.

Индекс Используя логическое выражение

Составьте новую таблицу, T3, содержа пол, высоту и вес пациентов моложе 30. Выберите только строки, где значение в переменной, Age, является меньше чем 30.

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

rows = patients.Age<30;
vars = {'Gender','Height','Weight'};

rows является 100 1 логическим массивом, содержащим логический true (1) для строк, где значение в переменной, Age, является меньше чем 30.

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

T3 = patients(rows,vars)
T3=15×3 table
                  Gender     Height    Weight
                 ________    ______    ______

    Moore        'Male'        68       183  
    Jackson      'Male'        71       174  
    Garcia       'Female'      69       131  
    Walker       'Female'      65       123  
    Hall         'Male'        70       189  
    Young        'Female'      63       114  
    Hill         'Female'      64       138  
    Rivera       'Female'      63       130  
    Cooper       'Female'      65       127  
    Cox          'Female'      66       111  
    Howard       'Female'      68       134  
    James        'Male'        66       186  
    Jenkins      'Male'        69       189  
    Perry        'Female'      64       120  
    Alexander    'Male'        69       171  

T3 15 3 таблица.

Создание массива из содержимого таблицы

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

Загрузка демонстрационных данных

Загрузите демонстрационные данные пациентов и составьте таблицу. Используйте уникальные идентификаторы в LastName как имена строки.

load patients

patients = table(Age,Gender,Height,Weight,Smoker,...
    'RowNames',LastName);

Таблица, patients, содержит 100 строк и 5 переменных.

Извлеките несколько строк и несколько переменных

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

Извлеките высоту и вес для первых пяти пациентов. Используйте числовые индексы, чтобы выбрать подмножество строк, 1:5 и имен переменных, чтобы выбрать подмножество переменных, {Height,Weight}.

A = patients{1:5,{'Height','Weight'}}
A = 5×2

    71   176
    69   163
    64   131
    67   133
    64   119

A является 5 2 числовым массивом.

Извлеките данные из одной переменной

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

figure()
histogram(patients.Weight)
title(' Patient Weight')

patients.Weight является вектор-столбцом с двойной точностью с 100 строками. Также можно использовать фигурные скобки, patients{:,'Weight'}, чтобы извлечь все строки для переменной Weight.

Чтобы задать подмножество строк для одной переменной, можно следовать за индексацией точки с круглыми скобками или фигурными скобками. Извлеките высоты пациентов некурящего моложе 30.

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

rows = patients.Smoker==false & patients.Age<30;

Используйте запись через точку, чтобы извлечь желаемые строки от переменной, Height.

patients.Height(rows)
ans = 11×1

    68
    71
    70
    63
    64
    63
    65
    66
    68
    66
      ⋮

Вывод является 11 1 числовым массивом. Также можно задать одну переменную, Height, в фигурных скобках, чтобы извлечь желаемые данные, patients{rows,'Height'}.

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

| |

Связанные примеры

Больше о

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