Класс: набор данных
(Не Рекомендуемый) Удалить стек массива набора данных из одной переменной в несколько переменных
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,:)