exponenta event banner

стек

Класс: набор данных

(Не рекомендуется) Массив наборов данных из нескольких переменных в одну переменную

dataset тип данных не рекомендуется. Для работы с разнородными данными используйте MATLAB ®table вместо этого тип данных. См. MATLAB table для получения дополнительной информации.

Синтаксис

B = stack(A,datavars)
[B,iA] = stack(A,datavars)
B = stack(A,datavars,Parameter,value)

Описание

B = stack(A,datavars) содержит несколько переменных в массиве наборов данных A в одну переменную в B. В общем, B содержит меньше переменных, но больше наблюдений, чем A.

datavars задает группу m переменные данных в A. stack создает одну переменную данных в B путем перемежения их значений, и если A имеет n наблюдения, затем B имеет mоколо-n наблюдения. Другими словами, stack принимает m значения данных из каждого наблюдения в A и накапливает их для создания m наблюдения в B. datavars - положительное целое число, вектор положительных целых чисел, символьный вектор, строковый массив, клеточный массив символьных векторов или логический вектор. stack также создает переменную группировки в B чтобы указать, какой из m переменные данных в A каждое наблюдение в B соответствует.

stack присваивает значения свойствам «per-variable» (например, Units и VarDescription) для новой переменной данных в B из соответствующих значений свойств для первой переменной, указанной в datavars.

stack копирует оставшиеся переменные из A кому B без укладки, путем тиражирования каждого из их значений m времена. Эти переменные обычно группируются. Потому что их значения постоянны в каждой группе m наблюдения в B, они определяют, какое наблюдение в A наблюдение в B происходил из.

[B,iA] = stack(A,datavars) возвращает вектор индекса iA указание соответствия между наблюдениями в B и тех, кто в A. stack создает B(j,:) использование A(iA(j),datavarss).

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

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

B = stack(A,datavars,Parameter,value) использует следующие пары «имя/значение параметра» для управления stack преобразует переменные в A к переменным в B:

'ConstVars'Переменные в A для копирования в B без укладки. ConstVars - положительное целое число, вектор положительных целых чисел, символьный вектор, строковый массив, клеточный массив символьных векторов или логический вектор. По умолчанию используются все переменные в A не указано в datavars.
'NewDataVarName'Имя переменной данных, создаваемой в B. По умолчанию используется конкатенация имен m переменные, которые складываются.
'IndVarName'Имя переменной группировки, создаваемой в B для указания источника каждого значения в новой переменной данных. Значение по умолчанию основано на 'NewDataVarName' параметр.

Можно также указать несколько групп переменных данных в A, каждый из которых становится переменной в B. Все группы должны содержать одинаковое количество переменных. Используйте строковый массив или массив ячеек символьных векторов, чтобы содержать несколько значений параметров для datavars или содержать несколько значений для 'NewDataVarName'.

Примеры

Объедините несколько переменных для предполагаемых показателей гриппа в одну переменную. Затем проанализируйте предполагаемые показатели гриппа по дате.

load flu
 
% FLU has a 'Date' variable, and 10 variables for estimated influenza rates
% (in 9 different regions, estimated from Google searches, plus a
% nationwide estimate from the CDC). Combine those 10 variables into an
% array that has a single data variable, 'FluRate', and an indicator
% variable, 'Region', that says which region each estimate is from.
[flu2,iflu] = stack(flu, 2:11, 'NewDataVarName','FluRate', ...
    'IndVarName','Region')
 
% The second observation in FLU is for 10/16/2005.  Find the observations
% in FLU2 that correspond to that date.
flu(2,:)
flu2(iflu==2,:)
 
% Use the 'Date' variable from that array to split 'FluRate' into 52
% separate variables, each containing the estimated influenza rates for
% each unique date.  The new array has one observation for each region.  In
% effect, this is the original array FLU "on its side".
dateNames = cellstr(datestr(flu.Date,'mmm_DD_YYYY'));
[flu3,iflu2] = unstack(flu2, 'FluRate', 'Date', ...
    'NewDataVarNames',dateNames)
 
% Since observations in FLU3 represent regions, IFLU2 indicates the first
% occurrence in FLU2 of each region.
flu2(iflu2,:)