exponenta event banner

splitvars

Разделить многозначные переменные в таблице или расписании

Описание

пример

T2 = splitvars(T1) разбивает все переменные с несколькими столбцами в T1 таким образом, они являются переменными с одним столбцом в T2 (см. диаграмму). Все переменные из одного столбца T1 не изменяются.

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

  • Если переменная в T1 является самой таблицей, то splitvars использует имена его переменных (и, при необходимости, имя этой таблицы) для создания уникальных имен для новых переменных в T2.

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

пример

T2 = splitvars(T1,vars) разделяет только переменные таблицы, указанные vars. Переменные можно задавать по имени, по положению или с помощью логических индексов.

пример

T2 = splitvars(T1,vars,'NewVariableNames',newNames) присваивает новые имена назначенным переменным, которые разделены из T1 и скопирован в T2.

Примеры

свернуть все

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

A = (1:3)';
B = [5 11 12; 20 30 50; 0.1 3.4 5.9]';
C = {'a','XX';'b','YY';'c','ZZ'};
D = [128 256 512]';
T1 = table(A,B,C,D)
T1=3×4 table
    A           B                   C            D 
    _    ________________    _______________    ___

    1     5     20    0.1    {'a'}    {'XX'}    128
    2    11     30    3.4    {'b'}    {'YY'}    256
    3    12     50    5.9    {'c'}    {'ZZ'}    512

Разделить переменные B и C. Все переменные в выходной таблице имеют один столбец.

T2 = splitvars(T1)
T2=3×7 table
    A    B_1    B_2    B_3     C_1      C_2       D 
    _    ___    ___    ___    _____    ______    ___

    1     5     20     0.1    {'a'}    {'XX'}    128
    2    11     30     3.4    {'b'}    {'YY'}    256
    3    12     50     5.9    {'c'}    {'ZZ'}    512

Создание таблицы, содержащей таблицы, с использованием массивов данных из patients.mat файл. Просмотрите первые три строки.

load patients
Personal_Data = table(Gender,Age);
BMI_Data = table(Height,Weight);
BloodPressure = table(Systolic,Diastolic);
T1 = table(LastName,Personal_Data,BMI_Data,BloodPressure);
head(T1,3)
ans=3×4 table
      LastName        Personal_Data          BMI_Data            BloodPressure    
                      Gender      Age    Height    Weight    Systolic    Diastolic
    ____________    _________________    ________________    _____________________

    {'Smith'   }    {'Male'  }    38       71       176        124          93    
    {'Johnson' }    {'Male'  }    43       69       163        109          77    
    {'Williams'}    {'Female'}    38       64       131        125          83    

Определить BloodPressure в качестве переменной для разделения.

T2 = splitvars(T1,'BloodPressure');
head(T2,3)
ans=3×5 table
      LastName        Personal_Data          BMI_Data        Systolic    Diastolic
                      Gender      Age    Height    Weight                         
    ____________    _________________    ________________    ________    _________

    {'Smith'   }    {'Male'  }    38       71       176        124          93    
    {'Johnson' }    {'Male'  }    43       69       163        109          77    
    {'Williams'}    {'Female'}    38       64       131        125          83    

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

T3 = splitvars(T1,{'BMI_Data','BloodPressure'});
head(T3,3)
ans=3×6 table
      LastName        Personal_Data      Height    Weight    Systolic    Diastolic
                      Gender      Age                                             
    ____________    _________________    ______    ______    ________    _________

    {'Smith'   }    {'Male'  }    38       71       176        124          93    
    {'Johnson' }    {'Male'  }    43       69       163        109          77    
    {'Williams'}    {'Female'}    38       64       131        125          83    

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

T4 = splitvars(T1,[2 4]);
head(T4,3)
ans=3×6 table
      LastName        Gender      Age        BMI_Data        Systolic    Diastolic
                                         Height    Weight                         
    ____________    __________    ___    ________________    ________    _________

    {'Smith'   }    {'Male'  }    38       71       176        124          93    
    {'Johnson' }    {'Male'  }    43       69       163        109          77    
    {'Williams'}    {'Female'}    38       64       131        125          83    

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

load patients
Personal_Data = [Age,Height,Weight];
BloodPressure = [Systolic,Diastolic];
T1 = table(LastName,Gender,Personal_Data,BloodPressure);
head(T1,3)
ans=3×4 table
      LastName        Gender       Personal_Data      BloodPressure
    ____________    __________    ________________    _____________

    {'Smith'   }    {'Male'  }    38     71    176     124     93  
    {'Johnson' }    {'Male'  }    43     69    163     109     77  
    {'Williams'}    {'Female'}    38     64    131     125     83  

Разделение BloodPressure и укажите новые имена для новых переменных в выходной таблице.

T2 = splitvars(T1,'BloodPressure','NewVariableNames',{'Systolic','Diastolic'});
head(T2,3)
ans=3×5 table
      LastName        Gender       Personal_Data      Systolic    Diastolic
    ____________    __________    ________________    ________    _________

    {'Smith'   }    {'Male'  }    38     71    176      124          93    
    {'Johnson' }    {'Male'  }    43     69    163      109          77    
    {'Williams'}    {'Female'}    38     64    131      125          83    

Разделить оба BMI_Data и BloodPressure. Для каждой разделяемой переменной необходимо предоставить массив ячеек с правильным количеством новых имен.

T3 = splitvars(T1,{'Personal_Data','BloodPressure'},...
     'NewVariableNames',{{'Age','Height','Weight'},{'Systolic','Diastolic'}});
head(T3,3)
ans=3×7 table
      LastName        Gender      Age    Height    Weight    Systolic    Diastolic
    ____________    __________    ___    ______    ______    ________    _________

    {'Smith'   }    {'Male'  }    38       71       176        124          93    
    {'Johnson' }    {'Male'  }    43       69       163        109          77    
    {'Williams'}    {'Female'}    38       64       131        125          83    

Входные аргументы

свернуть все

Входная таблица, заданная как таблица или расписание.

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

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

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

.
Представлен в R2018a