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

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

В MATLAB® можно составить таблицы и присвоить данные им несколькими способами.

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

  • Добавьте переменные в существующую таблицу при помощи записи через точку.

  • Присвойте переменные пустой таблице.

  • Предварительно выделите таблицу и заполните ее данные позже.

  • Преобразуйте переменные в таблицы при помощи array2tablecell2table, или struct2table функции.

  • Считайте таблицу из файла при помощи readtable функция.

  • Импортируйте таблицу с помощью Import Tool.

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

Составьте таблицы от входных массивов

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

Во-первых, создайте шесть ориентированных на столбец массивов данных. Эти массивы имеют пять строк, потому что существует пять пациентов. (Большинство этих массивов является вектор-столбцами 5 на 1, в то время как BloodPressure 5 2 матрица.)

LastName = ["Sanchez";"Johnson";"Zhang";"Diaz";"Brown"];
Age = [38;43;38;40;49];
Smoker = [true;false;true;false;true];
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];

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

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

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

Таблица 5 6 таблица, потому что это имеет шесть переменных. Как BloodPressure переменная показывает, сама табличная переменная может иметь несколько столбцов. Этот пример показывает, почему таблицы имеют строки и переменные, не строки и столбцы.

Добавьте переменную в таблицу Используя запись через точку

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

Например, добавьте BMI переменная к patients. Вычислите индекс массы тела или BMI, с помощью значений в patients.Weight и patients.Height. Присвойте значения BMI новой табличной переменной.

patients.BMI = (patients.Weight*0.453592)./(patients.Height*0.0254).^2
patients=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
    "Zhang"      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

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

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

Во-первых, составьте пустую таблицу, patients2, путем вызова table без аргументов.

patients2 = table
patients2 =

  0x0 empty table

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

patients2.Name = LastName;
patients2.Age = Age;
patients2.Smoker = Smoker;
patients2.Height = Height;
patients2.Weight = Weight;
patients2.BP = BloodPressure
patients2=5×6 table
      Name       Age    Smoker    Height    Weight        BP    
    _________    ___    ______    ______    ______    __________

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

Предварительно выделите строки таблицы и заливки

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

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

sz = [4 3];
varTypes = ["double","datetime","string"];
varNames = ["Temperature","Time","Station"];
temps = table('Size',sz,'VariableTypes',varTypes,'VariableNames',varNames)
temps=4×3 table
    Temperature    Time     Station 
    ___________    ____    _________

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

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

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

        75         24-Aug-2021 23:47:20    "S1"     
        68         25-Aug-2021 23:47:20    "S2"     
         0                          NaT    <missing>
         0                          NaT    <missing>

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

temps(3:4,:) = table([63;72],[datetime('now')+2;datetime('now')+3],["S3";"S4"])
temps=4×3 table
    Temperature            Time            Station
    ___________    ____________________    _______

        75         24-Aug-2021 23:47:20     "S1"  
        68         25-Aug-2021 23:47:20     "S2"  
        63         26-Aug-2021 23:47:20     "S3"  
        72         27-Aug-2021 23:47:20     "S4"  

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

temps(6,:) = {62,datetime('now')+6,"S6"}
temps=6×3 table
    Temperature            Time             Station 
    ___________    ____________________    _________

        75         24-Aug-2021 23:47:20    "S1"     
        68         25-Aug-2021 23:47:20    "S2"     
        63         26-Aug-2021 23:47:20    "S3"     
        72         27-Aug-2021 23:47:20    "S4"     
         0                          NaT    <missing>
        62         30-Aug-2021 23:47:20    "S6"     

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

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

Например, преобразуйте массив в таблицу при помощи array2table. Массивы не имеют имен столбцов, таким образом, таблица имеет имена переменных по умолчанию.

A = randi(3,3)
A = 3×3

     3     3     1
     3     2     2
     1     1     3

a2t = array2table(A)
a2t=3×3 table
    A1    A2    A3
    __    __    __

    3     3     1 
    3     2     2 
    1     1     3 

Можно обеспечить собственные имена табличной переменной при помощи "VariableNames" аргумент значения имени.

a2t = array2table(A,"VariableNames",["First","Second","Third"])
a2t=3×3 table
    First    Second    Third
    _____    ______    _____

      3        3         1  
      3        2         2  
      1        1         3  

Считайте таблицу из файла

Распространено иметь большое количество табличных данных в файле, таких как CSV (разделенное от запятой значение) файл или электронная таблица Excel®. Чтобы считать такие данные в таблицу, используйте readtable функция.

Например, файл CSV outages.csv файл примера, который распределяется с MATLAB. Файл содержит данные для набора отключений электричества электроэнергии. Первая линия outages.csv имеет имена столбцов. Остальная часть файла разделила от запятой значения данных для каждого отключения электричества. Первые несколько линий показывают здесь.

Region,OutageTime,Loss,Customers,RestorationTime,Cause
SouthWest,2002-02-01 12:18,458.9772218,1820159.482,2002-02-07 16:50,winter storm
SouthEast,2003-01-23 00:49,530.1399497,212035.3001,,winter storm
SouthEast,2003-02-07 21:15,289.4035493,142938.6282,2003-02-17 08:14,winter storm
West,2004-04-06 05:44,434.8053524,340371.0338,2004-04-06 06:10,equipment fault
MidWest,2002-03-16 06:18,186.4367788,212754.055,2002-03-18 23:23,severe storm
...

Считать outages.csv и храните данные в таблице, можно использовать readtable. Это читает числовые значения, даты и времена, и представляет в виде строки в табличные переменные, которые имеют соответствующие типы данных. Здесь, Loss и Customers числовые массивы. OutageTime и RestorationTime переменными является datetime массивы, потому что readtable распознает форматы даты и времени текста в тех столбцах входного файла. Чтобы считать остальную часть текстовых данных в строковые массивы, задайте "TextType" аргумент значения имени.

outages = readtable("outages.csv","TextType","string")
outages=1468×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"   
    "West"         2003-06-18 02:49         0             0    2003-06-18 10:54    "attack"         
    "West"         2004-06-20 14:39    231.29           NaN    2004-06-20 19:16    "equipment fault"
    "West"         2002-06-06 19:28    311.86           NaN    2002-06-07 00:51    "equipment fault"
    "NorthEast"    2003-07-16 16:23    239.93         49434    2003-07-17 01:12    "fire"           
    "MidWest"      2004-09-27 11:09    286.72         66104    2004-09-27 16:37    "equipment fault"
    "SouthEast"    2004-09-05 17:48    73.387         36073    2004-09-05 20:46    "equipment fault"
    "West"         2004-05-21 21:45    159.99           NaN    2004-05-22 04:23    "equipment fault"
    "SouthEast"    2002-09-01 18:22    95.917         36759    2002-09-01 19:12    "severe storm"   
    "SouthEast"    2003-09-27 07:32       NaN    3.5517e+05    2003-10-04 07:02    "severe storm"   
    "West"         2003-11-12 06:12    254.09    9.2429e+05    2003-11-17 02:04    "winter storm"   
    "NorthEast"    2004-09-18 05:54         0             0                 NaT    "equipment fault"
      ⋮

Таблица импорта Используя Import Tool

Наконец, можно в интерактивном режиме предварительно просмотреть и импортировать данные из электронных таблиц или разделенных текстовых файлов при помощи Import Tool. Существует два способа открыть Import Tool.

  • Панель инструментов MATLAB: На вкладке Home, в разделе Variable, нажимают Import Data.

  • Командная строка MATLAB: Введите uiimport(filename), где filename имя текста или файла электронной таблицы.

Например, откройте outages.csv файл примера при помощи uiimport и which получить путь к файлу.

uiimport(which("outages.csv"))

Import Tool показывает вам предварительный просмотр этих шести столбцов от outages.csv. Чтобы импортировать данные как таблицу, выполните эти шаги.

  1. В разделе Imported Data выберите Table как выходной тип.

  2. Нажмите Import Selection (около верхнего правого угла). Новая таблица, названная outages, появляется в вашей рабочей области.

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

| | | | |

Похожие темы