стек

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

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

Тип данных 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,:)

Смотрите также

|