stack

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

Описание

пример

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 прибывает из. stack функция реплицирует данные из переменных в U это не сложено.

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

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

пример

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

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

пример

[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, указать на соответствие между строками во входе распаковало таблицу, 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 имя аргумента и 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строка th в выходной таблице, 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