unstack

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

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

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

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

[A,iB] = unstack(B,datavar,indvar) возвращает вектор индекса iB указание на соответствие между наблюдениями в A и те в B. Для каждого наблюдения в Aib содержит индекс первого в соответствующей группе наблюдений в 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,:)

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

|