Класс: набор данных
Сложите данные из нескольких переменных в одну переменную
Тип данных dataset
может быть удален в будущем релизе. Чтобы работать с гетерогенными данными, используйте тип данных MATLAB® table
вместо этого. Смотрите MATLAB документация table
для получения дополнительной информации.
B = stack(A,datavars)
[B,iA] = stack(A,datavars)
B = stack(A,datavars,Parameter
,value
)
B = stack(A,datavars)
стеки несколько переменных в массиве набора данных A
в одну переменную в B
. В целом B
содержит меньше переменных, но больше наблюдений, чем A
.
datavars
задает группу переменных данных m
в A
. stack
создает одну переменную данных в B
путем чередования их значений, и если A
имеет наблюдения n
, то B
имеет m
-by-n
наблюдения. Другими словами, stack
берет значения данных m
из каждого наблюдения в A
и складывает их, чтобы создать наблюдения m
в B
. datavars
является положительным целым числом, вектором положительных целых чисел, вектора символов, массива строк, массива ячеек из символьных векторов или логического вектора. stack
также создает группирующую переменную в B
, чтобы указать, какой из переменных данных m
в A
соответствует каждое наблюдение в B
.
stack
присваивает значения для "свойств на переменную (например, Units
и VarDescription
) для новой переменной данных в B
от соответствующих значений свойств для первой переменной, перечисленной в datavars
.
stack
копирует остающиеся переменные от A
до B
без укладки путем тиражирования каждого из их значений времена m
. Эти переменные обычно являются группирующими переменными. Поскольку их значения являются постоянными через каждую группу наблюдений m
в B
, они идентифицируют, из какого наблюдения в A
наблюдение в B
прибыло.
[B,iA] = stack(A,datavars)
возвращает индексный вектор iA
, указывающий на соответствие между наблюдениями в B
и теми в A
. stack
создает B(j,:)
с помощью A(iA(j),datavarss)
.
Для получения дополнительной информации о группирующих переменных смотрите Группирующие переменные.
B = stack(A,datavars,
использует следующее название параметра / пары значения, чтобы управлять, как Parameter
,value
)stack
преобразовывает переменные в A
к переменным в B
:
'ConstVars' | Переменные в A , чтобы скопировать в B без укладки. ConstVars является положительным целым числом, вектором положительных целых чисел, вектора символов, массива строк, массива ячеек из символьных векторов или логического вектора. Значением по умолчанию являются все переменные в A , не заданном в datavars . |
'NewDataVarName' | Имя для переменной данных, которая будет создана в B . Значением по умолчанию является конкатенация имен переменных m , которые сложены. |
'IndVarName' | Имя для группирующей переменной, чтобы создать в B , чтобы указать на источник каждого значения в новой переменной данных. Значение по умолчанию основано на параметре 'NewDataVarName' . |
Можно также задать несколько групп переменных данных в A
, каждая из которых становится переменной в B
. Все группы должны содержать то же количество переменных. Используйте массив строк или массив ячеек из символьных векторов, чтобы содержать несколько значений параметров для datavars
или содержать несколько значений для 'NewDataVarName'
.
Объедините несколько переменных для предполагаемых уровней гриппа в одну переменную. Затем распакуйте предполагаемые уровни гриппа по дате.
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,:)