Класс: набор данных
Распакуйте данные из одной переменной в несколько переменных
Тип данных 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
. Для каждого наблюдения в 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,:)