exponenta event banner

нестек

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

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

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

Синтаксис

A = unstack(B,datavar,indvar)
[A,iB] = unstack(B,datavar,indvar)
A = unstack(B,datavar,indvar,'Parameter',value)

Описание

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

datavar задает переменную данных в B чтобы разобрать. indvar указывает переменную индикатора в B определяет, какая переменная в A каждое значение в datavar не упакован в. unstack обрабатывает остальные переменные в B в качестве группируемых переменных. Каждая уникальная комбинация их значений определяет группу наблюдений в B которые будут разархивированы в одно наблюдение в A.

unstack создает m переменные данных в A, где m - количество уровней групп в indvar. Значения в indvar указать, какие из них m переменные получают значения из datavar. j-я переменная данных в A содержит значения из datavar которые соответствуют наблюдениям, indvar значение было j-й из m возможные уровни. Элементы этих m переменные, для которых нет соответствующего значения данных в B exists содержат значение по умолчанию.

datavar - положительное целое число, символьный вектор, строковый скаляр или логический вектор, содержащий одно истинное значение. indvar - положительное целое число, имя переменной или логический вектор, содержащий одно истинное значение.

[A,iB] = unstack(B,datavar,indvar) возвращает вектор индекса iB указание соответствия между наблюдениями в A и тех, кто в B. Для каждого наблюдения в A, iB содержит индекс первого в соответствующей группе наблюдений в B.

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

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

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

'GroupVars'Группирование переменных в B которые определяют группы наблюдений. groupvars - положительное целое число, вектор положительных целых чисел, символьный вектор, строковый массив, клеточный массив символьных векторов или логический вектор. По умолчанию используются все переменные в B не указан в datavar или indvar.
'NewDataVarNames'Строковый массив или массив ячеек символьных векторов, содержащих имена переменных данных unstack должен создавать в A. По умолчанию - это имена групп переменной группировки, указанной в indvar.
'AggregationFun'Дескриптор функции, принимающий подмножество значений из datavar и возвращает одно значение. stack применяет эту функцию к наблюдениям из той же группы, которые имеют одинаковое значение indvar. Функция должна агрегировать значения данных в одно значение, и в таких случаях восстановление невозможно B от A использование stack. Значение по умолчанию: @sum для числовых переменных данных. Для нечисловых переменных значение по умолчанию отсутствует, и необходимо указать 'AggregationFun' если несколько наблюдений в одной группе имеют одинаковые значения indvar.
'ConstVars'Переменные в B для копирования в A без расфиксации. Значения для этих переменных в A взяты из первого наблюдения в каждой группе в Bпоэтому эти переменные обычно должны быть постоянными в каждой группе. ConstVars - положительное целое число, вектор положительных целых чисел, символьный вектор, строковый массив, клеточный массив символьных векторов или логический вектор. По умолчанию переменные отсутствуют.

Можно также указать несколько переменных данных в B, каждый из которых становится набором m переменные в A. В этом случае укажите datavar как вектор положительных целых чисел, строковый массив или массив ячеек, содержащий имена переменных, или логический вектор. Можно указать только одну переменную с помощью indvar. Имена каждого набора переменных данных в A являются именем соответствующей переменной данных в B с именами, указанными в 'NewDataVarNames'. Функция, указанная в 'AggregationFun' должен возвращать значение с одной строкой.

Примеры

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

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,:)