stack

Стекайте данные из входной таблицы или timetable в одну переменную в выходной таблице или timetable

Описание

пример

S = stack(U,vars) преобразует вход таблицу или расписание, U, в сложенный таблицу или расписание, S. Функция стекает значения из нескольких переменных в U в одну переменную в S. Входной параметр vars задает какие переменные из U укладывать либо по именам, либо по позициям в U.

Если U имеет n строки и vars задает m переменные в U, затем S имеет m*n строки. stack функция перемежает значения от заданных переменных в U создать одну переменную в S. Для примера, если U имеет 10 строк, и вы стекаете три переменные из U, затем S имеет 30 строк. В целом, S содержит меньше переменных, но больше строк, чем U.

Таблица выхода или расписание, S, содержит новую categorical переменная, указывающая, какая переменная в U сложенные данные в каждой строке S происходит от. The stack функция реплицирует данные из переменных в U которые не сложены.

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

  • Если U является расписанием, тогда вы не можете стекать строки раз.

пример

S = stack(U,vars,Name,Value) преобразует таблицу, U, с дополнительными опциями, заданными одним или несколькими Name,Value аргументы в виде пар.

Для примера можно задать имена переменных для новых и сложенных переменных в U.

пример

[S,iu] = stack(___) также возвращает вектор индекса, iu, что указывает на соответствие между строками в S и строки в U. Можно использовать любой из предыдущих входных параметров.

Примеры

свернуть все

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

Test1 = [93;57;87;89];
Test2 = [89;77;92;86];
Test3 = [95;62;89;91];

U = table(Test1,Test2,Test3)
U=4×3 table
    Test1    Test2    Test3
    _____    _____    _____

     93       89       95  
     57       77       62  
     87       92       89  
     89       86       91  

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

Сложите тестовые счета в одну переменную.

S = stack(U,1:3)
S=12×2 table
    Test1_Test2_Test3_Indicator    Test1_Test2_Test3
    ___________________________    _________________

               Test1                      93        
               Test2                      89        
               Test3                      95        
               Test1                      57        
               Test2                      77        
               Test3                      62        
               Test1                      87        
               Test2                      92        
               Test3                      89        
               Test1                      89        
               Test2                      86        
               Test3                      91        

S содержит двенадцать строк и две переменные. S находится в сложенном формате.

Категориальная переменная, Test1_Test2_Test3_Indicator, определяет, какой тест соответствует счету в переменной со стеком данных, Test1_Test2_Test3.

Составьте расписание, указывающее количество снегопадов в трех городах из пяти разных штормов. Укажите даты бурь следующим datetime значения и используйте их в качестве времени строки расписания U. Задайте массив штормовых чисел, Storm, как категориальный массив, поскольку в этом расписании имеется фиксированный набор номеров штормов.

Storm = categorical([1;2;3;4;5]);
Date = datetime({'2011-12-25';'2012-01-02';'2012-01-23';'2012-02-07';'2012-02-15'});
Natick = [20;5;13;0;17];
Boston = [18;9;21;5;12];
Worcester = [26;10;16;3;15];

U = timetable(Date,Storm,Natick,Boston,Worcester)
U=5×4 timetable
       Date        Storm    Natick    Boston    Worcester
    ___________    _____    ______    ______    _________

    25-Dec-2011      1        20        18         26    
    02-Jan-2012      2         5         9         10    
    23-Jan-2012      3        13        21         16    
    07-Feb-2012      4         0         5          3    
    15-Feb-2012      5        17        12         15    

Переменные Storm и Date содержат данные, которые являются постоянными в каждом местоположении.

Стекайте переменные Natick, Boston, и Worcester в одну переменную. Назовите переменную, содержащую сложенные данные, Snowfall, и назовите новую переменную индикатора, Town.

S = stack(U,{'Natick','Boston','Worcester'},...
          'NewDataVariableName','Snowfall',...
          'IndexVariableName','Town')
S=15×3 timetable
       Date        Storm      Town       Snowfall
    ___________    _____    _________    ________

    25-Dec-2011      1      Natick          20   
    25-Dec-2011      1      Boston          18   
    25-Dec-2011      1      Worcester       26   
    02-Jan-2012      2      Natick           5   
    02-Jan-2012      2      Boston           9   
    02-Jan-2012      2      Worcester       10   
    23-Jan-2012      3      Natick          13   
    23-Jan-2012      3      Boston          21   
    23-Jan-2012      3      Worcester       16   
    07-Feb-2012      4      Natick           0   
    07-Feb-2012      4      Boston           5   
    07-Feb-2012      4      Worcester        3   
    15-Feb-2012      5      Natick          17   
    15-Feb-2012      5      Boston          12   
    15-Feb-2012      5      Worcester       15   

S содержит три строки для каждого шторма и stack повторяет данные в постоянных переменных, Storm и Dateсоответственно.

Категориальная переменная, Town, определяет, какая переменная в U содержит соответствующие Snowfall данные.

Составьте расписание, содержащее предполагаемые показатели заболеваемости гриппом в месяц вдоль восточного побережья Соединенных Штатов. Создайте другую переменную для Северо-Восточной, Средней Атлантики и Южной Атлантики. Источник данных: проект Google Flu Trends (с момента прекращения работы). Использование datetime массив как время строки расписания.

Month = datetime(2005,10,1,'Format','MMMM yyyy') + calmonths(0:5);
Month = Month';
NE = [1.1902; 1.3610; 1.5003; 1.7772; 2.1350; 2.2345];
MidAtl = [1.1865; 1.4120; 1.6043; 1.8830; 2.1227; 1.9920];
SAtl = [1.2730; 1.5820; 1.8625; 1.9540; 2.4803; 2.0203];

fluU = timetable(Month,NE,MidAtl,SAtl)
fluU=6×3 timetable
        Month          NE      MidAtl     SAtl 
    _____________    ______    ______    ______

    October 2005     1.1902    1.1865     1.273
    November 2005     1.361     1.412     1.582
    December 2005    1.5003    1.6043    1.8625
    January 2006     1.7772     1.883     1.954
    February 2006     2.135    2.1227    2.4803
    March 2006       2.2345     1.992    2.0203

Переменная Month содержит данные, которые являются постоянными по строке.

Стекайте переменные NE, MidAtl, и SAtl в одну переменную с именем FluRate. Назовите новую переменную индикатора Region и выход вектора индекса, ifluU, чтобы указать соответствие между строками в входе unstacked table, fluUи выход сложенный стол, fluS.

[fluS,ifluU] = stack(fluU,1:3,...
                     'NewDataVariableName','FluRate',...
                     'IndexVariableName','Region')
fluS=18×2 timetable
        Month        Region    FluRate
    _____________    ______    _______

    October 2005     NE        1.1902 
    October 2005     MidAtl    1.1865 
    October 2005     SAtl       1.273 
    November 2005    NE         1.361 
    November 2005    MidAtl     1.412 
    November 2005    SAtl       1.582 
    December 2005    NE        1.5003 
    December 2005    MidAtl    1.6043 
    December 2005    SAtl      1.8625 
    January 2006     NE        1.7772 
    January 2006     MidAtl     1.883 
    January 2006     SAtl       1.954 
    February 2006    NE         2.135 
    February 2006    MidAtl    2.1227 
    February 2006    SAtl      2.4803 
    March 2006       NE        2.2345 
      ⋮

ifluU = 18×1

     1
     1
     1
     2
     2
     2
     3
     3
     3
     4
      ⋮

ifluU(5) является 2. Пятая строка в выход таблице, fluS, содержит данные из второй строки в таблице входа fluU.

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

свернуть все

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

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

Примечание. Возможно создать несколько сложенных переменных в S путем определения vars как массив ячеек. В этом случае каждая камера vars задает отдельную группу переменных для стека. Для получения дополнительной информации см. советы».

Пример: S = stack(U,1:4) складывает первые четыре переменные U в одну переменную в S.

Пример: S = stack(U,{'Var1',Var3','Var5'}) складывает переменные U которые являются именованными Var1, Var3, и Var5.

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

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

Пример: 'NewDataVariableName','StackedData' называет новую переменную данных StackedData.

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

По умолчанию это все переменные в U не задан vars. Можно задать 'ConstantVariables' аргумент пары "имя-значение" для исключения переменных, не заданных vars или 'ConstantVariables' из выхода таблицы, S.

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

  • Вы можете включать имена строк или моменты времени, когда вы задаете значение 'ConstantVariables'.

  • stack повторяет имена строк или время строк, даже когда вы не включаете их в 'ConstantVariables'.

Имя новой переменной данных в S, заданная как разделенная разделенными запятой парами, состоящая из 'NewDataVariableName' и вектор символов, строковые массивы или массив ячеек из векторов символов. По умолчанию это конкатенация имен переменных из U которые сложены.

Имя новой переменной индикатора в S, заданная как разделенная разделенными запятой парами, состоящая из 'IndexVariableName' и вектор символов или строковый скаляр. По умолчанию это имя, основанное на NewDataVariableName.

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

свернуть все

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

Можно хранить дополнительные метаданные, такие как описания, переменные модули, имена переменных и имена строк в S. Для получения дополнительной информации смотрите разделы « Свойств» table или timetable.

stack присваивает модули измерения и значения свойств описания переменных из первой переменной, перечисленной в vars к соответствующему S.Properties.VariableUnits и S.Properties.VariableDescrisciptions значения для новой переменной данных.

Индексируйте к U, возвращается как вектор-столбец. Вектор индекса, iu, определяет строку в таблице входа, U, содержащего соответствующие данные. stack создает jвторая строка в выход таблице, S, использование U(iu(j),vars).

Совет

Создайте несколько сложенных переменных в выходе

  • Можно стекать значения из входа в несколько переменных в выход. Чтобы создать несколько сложенных переменных в S, используйте массив ячеек, чтобы задать несколько групп переменных из U. Можно использовать массив ячеек, чтобы содержать несколько значений для varsи массив ячеек из векторов символов или строковых массивов, содержащий несколько значений для 'NewDataVariableName' аргумент пары "имя-значение". Все группы должны содержать одинаковое количество переменных.

    Для примера, если U содержит четыре переменные, затем можно создать две сложенные переменные в S, вместо одного, при помощи этого синтаксиса.

    vars = {[1 2],[3 4]};
    S = stack(U,vars)
    

    В результате S имеет сложенную переменную со значениями от первой и второй переменных Uи другая сложенная переменная со значениями из третьей и четвертой переменных U.

    Чтобы задать новые имена переменных в S, использовать 'NewDataVariableName'. Заданное количество имен должно равняться количеству групп, заданному в vars.

    vars = {[1 2],[3 4]};
    S = stack(U,vars,'NewDataVariableName',{'Vars1And2','Vars3And4'})
    

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

    Для примера этот синтаксис создает одну сложенную переменную в S когда U - таблица с именованными переменными Var1, Var2, Var3, и Var4.

    S = stack(U,{'Var1','Var2','Var3','Var4'})
    

    Этот синтаксис создает две сложенные переменные в S.

    S = stack(U,{{'Var1','Var2'} {'Var3','Var4'}})
    

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

.
Введенный в R2013b