exponenta event banner

стек

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

Описание

пример

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 аргументы пары.

Например, можно указать имена переменных для новых и сгруппированных переменных в 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 имеет формат stacked.

Категориальная переменная, 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 Flump 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 должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как 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