stack

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

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

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

stack присваивает значения для свойств "по-переменным (например 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,:)