unstack

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

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

The 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. The j-я переменная данных в A содержит значения из datavar которые соответствуют наблюдениям, чьи indvar значение было j-ая часть m возможные уровни. Элементы этих m переменные, для которых нет соответствующего значения данных в B существует содержать значение по умолчанию.

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