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

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

Типичные причины индексации в таблицы включают:

  • Переупорядочение или удаление строк и переменных.

  • Добавление массивов как новые строки или переменные.

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

Сводные данные таблицы, индексирующей синтаксисы

В зависимости от типа индексации вы используете, можно получить доступ или к подтаблице или к массиву, извлеченному из таблицы. Индексация с:

  • Сглаженные круглые скобки, (), возвращают таблицу, которая выбрала строки и переменные.

  • Запись через точку возвращает содержимое переменной как массив.

  • Фигурные скобки, {}, возвращают массив, конкатенированный в содержимое выбранных строк и переменных.

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

Тип Выхода

Синтаксис

'Строки'

Переменные

Примеры

Таблица, содержа заданные строки и переменные

T (rowsВар )

Заданный как:

  • Номера строк (между 1 и m)

  • Имена, если T имеет имена строки

  • Времена, если T расписание

  • Двоеточие:), значение всех строк

Заданный как:

  • Переменные числа (между 1 и n)

  • Имена

  • Двоеточие:), значение всех переменных

  • T(1:5,[1 4 5])

    Таблица, имеющая первые пять строк и первые, четвертые, и пятые переменные T

  • T(:,{'A','B'})

    Таблица, имеющая все строки и переменные под названием 'A' и 'B' от T

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

S = vartype (type);

T (rowsS

Заданный как:

  • Номера строк (между 1 и m)

  • Имена, если T имеет имена строки

  • Времена, если T расписание

  • Двоеточие:), значение всех строк

Заданный как тип данных, такой как 'numeric'категориальный, или 'datetime'

  • S = vartype('numeric');

    T(1:5,S)

    Таблица, имеющая первые пять строк и числовые переменные T

Массив, извлекая данные из одной переменной

T.var

T. (expression)

Не заданный

Заданный как:

  • Имя переменной (без кавычек)

  • Выражение в круглых скобках, которое возвращает имя переменной или номер

  • T.Date

    Массив, извлеченный из табличной переменной под названием 'Date'

  • T.('2019/06/30')

    Массив, извлеченный из табличной переменной под названием '2019/06/30'

  • T.(1)

    Массив извлечен из первой табличной переменной

Массив, извлекая данные из переменных и заданных строк

T.var'Строки' )

T. (expression'Строки' )

Заданный как числовые или логические индексы массива

Заданный как:

  • Имя переменной (без кавычек)

  • Выражение в круглых скобках, которое возвращает имя переменной или номер

  • T.Date(1:5)

    Сначала пять строк массива, извлеченного из табличной переменной под названием 'Date'

  • T.('2019/06/30')(1:5)

    Сначала пять строк массива, извлеченного из табличной переменной под названием '2019/06/30'

  • T.(1)(1:5)

    Сначала пять строк массива извлечены из первой табличной переменной

Массив, конкатенируя данные из заданных строк и переменных

T {rowsВар }

Заданный как:

  • Номера строк (между 1 и m)

  • Имена, если T имеет имена строки

  • Времена, если T расписание

  • Двоеточие:), значение всех строк

Заданный как:

  • Переменные числа (между 1 и n)

  • Имена

  • Двоеточие:), значение всех переменных

  • T{1:5,[1 4 5]}

    Массив конкатенирован из первых пяти строк и первых, четвертых, и пятых переменных T

  • T{:,{'A','B'}}

    Массив конкатенирован из всех строк и переменных под названием 'A' и 'B' от T

Массив, конкатенируя данные из заданных строк и переменных с заданным типом данных

S = vartype (type);

T {rowsS

Заданный как:

  • Номера строк (между 1 и m)

  • Имена, если T имеет имена строки

  • Времена, если T расписание

  • Двоеточие:), значение всех строк

Заданный как тип данных, такой как 'numeric'категориальный, или 'datetime'

  • S = vartype('numeric');

    T{1:5,S}

    Массив конкатенирован из первых пяти строк и числовых переменных T

Массив, конкатенируя данные из всех строк и переменных

T.Variables

Не заданный

Не заданный

  • T.Variables

    Идентичный массиву, возвращенному T{:,:}

Таблицы, содержащие заданные строки и переменные

Загрузите выборочные данные для 100 пациентов от patients MAT-файл к переменным рабочей области.

load patients
whos
  Name                            Size            Bytes  Class      Attributes

  Age                           100x1               800  double               
  Diastolic                     100x1               800  double               
  Gender                        100x1             11412  cell                 
  Height                        100x1               800  double               
  LastName                      100x1             11616  cell                 
  Location                      100x1             14208  cell                 
  SelfAssessedHealthStatus      100x1             11540  cell                 
  Smoker                        100x1               100  logical              
  Systolic                      100x1               800  double               
  Weight                        100x1               800  double               

Составьте таблицу и заполните ее с Age, Genderвысота, Weight, и Smoker переменные рабочей области. Используйте уникальные идентификаторы в LastName как имена строки. T 100 5 таблица. (Когда вы задаете имена строки, они не рассчитывают как табличная переменная).

T = table(Age,Gender,Height,Weight,Smoker,...
    'RowNames',LastName)
T=100×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 
    Davis       46     {'Female'}      68       142      false 
    Miller      33     {'Female'}      64       142      true  
    Wilson      40     {'Male'  }      68       180      false 
    Moore       28     {'Male'  }      68       183      false 
    Taylor      31     {'Female'}      66       132      false 
    Anderson    45     {'Female'}      68       128      false 
    Thomas      42     {'Female'}      66       137      false 
    Jackson     25     {'Male'  }      71       174      false 
    White       39     {'Male'  }      72       202      true  
    Harris      36     {'Female'}      65       129      false 
    Martin      48     {'Male'  }      71       181      true  
      ⋮

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

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

T1 = T(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.

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

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

Выберите все данные для пациентов с фамилиями 'Williams' и 'Brown'. Начиная с T имеет имена строки, которые являются фамилиями пациентов, индекса в T использование имен строки.

T2 = T({'Williams','Brown'},:)
T2=2×5 table
                Age      Gender      Height    Weight    Smoker
                ___    __________    ______    ______    ______

    Williams    38     {'Female'}      64       131      false 
    Brown       49     {'Female'}      64       119      false 

T2 2 5 таблица.

Также можно выбрать переменные по наименованию. Составьте таблицу, которая имеет только первые пять строк T и Height и Weight переменные. Отобразите его.

T3 = T(1:5,{'Height','Weight'})
T3=5×2 table
                Height    Weight
                ______    ______

    Smith         71       176  
    Johnson       69       163  
    Williams      64       131  
    Jones         67       133  
    Brown         64       119  

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

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

T = addvars(T,SelfAssessedHealthStatus,'NewVariableNames','Self-Assessed Health Status');
T(1:5,{'Age','Smoker','Self-Assessed Health Status'})
ans=5×3 table
                Age    Smoker    Self-Assessed Health Status
                ___    ______    ___________________________

    Smith       38     true             {'Excellent'}       
    Johnson     43     false            {'Fair'     }       
    Williams    38     false            {'Good'     }       
    Jones       40     false            {'Fair'     }       
    Brown       49     false            {'Good'     }       

Укажите индекс типа данных

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

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

S = vartype('numeric')
S = 
	table vartype subscript:

		Select table variables matching the type 'numeric'

	See Access Data in a Table.

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

T4 = T(1:5,S)
T4=5×3 table
                Age    Height    Weight
                ___    ______    ______

    Smith       38       71       176  
    Johnson     43       69       163  
    Williams    38       64       131  
    Jones       40       67       133  
    Brown       49       64       119  

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

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

load patients

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

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

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

histogram(T.Weight)
title('Patient Weight')

T.Weight вектор-столбец с двойной точностью с 100 строками.

Выберите Rows with Logical Indexing

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

Например, создайте логические индексы, совпадающие с пациентами, возраст которых меньше 40.

rows = T.Age < 40
rows = 100x1 logical array

   1
   0
   1
   0
   0
   0
   1
   0
   1
   1
      ⋮

Извлекать высоты для пациентов, возраст которых меньше 40, индексируйте в Height переменная с помощью rows. Существует 56 пациентов, моложе, чем 40.

T.Height(rows)
ans = 56×1

    71
    64
    64
    68
    66
    71
    72
    65
    69
    69
      ⋮

Можно индексировать в таблицу с логическими индексами. Отобразите строки T для пациентов, которые моложе, чем 40.

T(rows,:)
ans=56×5 table
                 Age      Gender      Height    Weight    Smoker
                 ___    __________    ______    ______    ______

    Smith        38     {'Male'  }      71       176      true  
    Williams     38     {'Female'}      64       131      false 
    Miller       33     {'Female'}      64       142      true  
    Moore        28     {'Male'  }      68       183      false 
    Taylor       31     {'Female'}      66       132      false 
    Jackson      25     {'Male'  }      71       174      false 
    White        39     {'Male'  }      72       202      true  
    Harris       36     {'Female'}      65       129      false 
    Thompson     32     {'Male'  }      69       191      true  
    Garcia       27     {'Female'}      69       131      true  
    Martinez     37     {'Male'  }      70       179      false 
    Rodriguez    39     {'Female'}      64       117      false 
    Walker       28     {'Female'}      65       123      true  
    Hall         25     {'Male'  }      70       189      false 
    Allen        39     {'Female'}      63       143      false 
    Young        25     {'Female'}      63       114      false 
      ⋮

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

rows = (T.Smoker==true & T.Age<40);
T(rows,:)
ans=18×5 table
                 Age      Gender      Height    Weight    Smoker
                 ___    __________    ______    ______    ______

    Smith        38     {'Male'  }      71       176      true  
    Miller       33     {'Female'}      64       142      true  
    White        39     {'Male'  }      72       202      true  
    Thompson     32     {'Male'  }      69       191      true  
    Garcia       27     {'Female'}      69       131      true  
    Walker       28     {'Female'}      65       123      true  
    King         30     {'Male'  }      67       186      true  
    Nelson       33     {'Male'  }      66       180      true  
    Mitchell     39     {'Male'  }      71       164      true  
    Turner       37     {'Male'  }      70       194      true  
    Sanders      33     {'Female'}      67       115      true  
    Price        31     {'Male'  }      72       178      true  
    Jenkins      28     {'Male'  }      69       189      true  
    Long         39     {'Male'  }      68       182      true  
    Patterson    37     {'Female'}      65       120      true  
    Flores       31     {'Female'}      66       141      true  
      ⋮

Запись через точку с любым именем переменной или выражением

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

  • По наименованию, без кавычек. Например, T.Date задает переменную под названием 'Date'.

  • По выражению, где выражение заключено круглыми скобками после точки. Например, T.('Start Date') задает переменную под названием 'Start Date'.

Используйте первый синтаксис, когда имя табличной переменной также, окажется, будет допустимым идентификатором MATLAB®. (Допустимый идентификатор начинается с буквы и включает только буквы, цифры и символы нижнего подчеркивания.)

Используйте второй синтаксис, когда вы зададите:

  • Номер, который указывает на положение переменной в таблице.

  • Имя переменной, которое не является допустимым идентификатором MATLAB.

  • Функция, выход которой является именем переменной в таблице или переменной, которую вы добавляете в таблицу. Выход функции должен быть вектором символов или строковым скаляром.

Например, составьте таблицу от patients Matfile. Затем используйте запись через точку, чтобы получить доступ к содержимому табличных переменных.

load patients

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

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

T.(1)
ans = 100×1

    38
    43
    38
    40
    49
    46
    33
    40
    28
    31
      ⋮

Чтобы задать переменную по наименованию, можно заключить его в кавычки. Начиная с 'Age' допустимый идентификатор, можно задать его с помощью любого T.Age или T.('Age').

T.('Age')
ans = 100×1

    38
    43
    38
    40
    49
    46
    33
    40
    28
    31
      ⋮

Можно задать имена табличной переменной, которые не являются допустимыми идентификаторами MATLAB. Имена переменных могут включать пробелы и символы non-ASCII, и могут запуститься с любого символа. Однако, когда вы используете запись через точку, чтобы получить доступ к табличной переменной с таким именем, необходимо задать его с помощью круглых скобок.

Добавьте имя переменной с пробелами и дефисом к T.

T = addvars(T,SelfAssessedHealthStatus,'NewVariableNames','Self-Assessed Health Status');
T(1:5,:)
ans=5×6 table
                Age      Gender      Height    Weight    Smoker    Self-Assessed Health Status
                ___    __________    ______    ______    ______    ___________________________

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

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

C = T.('Self-Assessed Health Status');
C(1:5)
ans = 5x1 cell
    {'Excellent'}
    {'Fair'     }
    {'Good'     }
    {'Fair'     }
    {'Good'     }

Также можно использовать выход функции как имя переменной. Удалите T.('Self-Assessed Health Status') переменная. Затем замените его на переменную, имя которой включает сегодняшнюю дату.

T.('Self-Assessed Health Status') = [];
T.(string(datetime('today')) + ' Self Report') = SelfAssessedHealthStatus;
T(1:5,:)
ans=5×6 table
                Age      Gender      Height    Weight    Smoker    29-Jan-2020 Self Report
                ___    __________    ______    ______    ______    _______________________

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

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

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

Задайте строки и переменные

Составьте таблицу от числовых и логических массивов от patients файл.

load patients

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

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

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

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

    71   176
    69   163
    64   131
    67   133
    64   119

A 5 2 числовой массив, не таблица.

Если вы задаете одно имя переменной, то изогнутые результаты индексации фигурной скобки в том же массиве можно добраться с записью через точку. Однако необходимо задать и строки и переменные, когда вы используете изогнутую индексацию фигурной скобки. Например, это синтаксисы T.Height и T{:,'Height'} возвратите тот же массив.

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

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

A2 = T.Variables
A2 = 100×4

    38    71   176     1
    43    69   163     0
    38    64   131     0
    40    67   133     0
    49    64   119     0
    46    68   142     0
    33    64   142     1
    40    68   180     0
    28    68   183     0
    31    66   132     0
      ⋮

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

| | |

Похожие темы