unstack

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

Описание

пример

U = unstack(S,vars,ivar) преобразовывает таблицу или расписание, S, к переводной таблице или расписанию, U, это распаковано. vars задает переменные в S, каждый из которых распакован в несколько переменных в U. В общем случае U содержит больше переменных, но меньше строк, чем S.

ivar входной параметр задает переменную в S тот unstack использование в качестве переменной индикатора. Значения в ivar определите который переменные в U содержите элементы, взятые из vars после распаковывания.

unstack функционируйте обрабатывает остающиеся переменные по-другому в таблицах и расписаниях.

  • Если S таблица, затем unstack обрабатывает остающиеся переменные как сгруппированные переменные. Каждая уникальная комбинация значений в сгруппированных переменных идентифицирует группу строк в S это распаковано в одну строку U.

  • Если S расписание, затем unstack отбрасывает остающиеся переменные. Однако unstack обрабатывает вектор времен строки как сгруппированная переменная.

Вы не можете распаковать имена строки таблицы, или времена строки расписания, или задать любого как переменную индикатора. Можно задать имена строки или времена строки как постоянные переменные с 'ConstantVariables' аргумент.

U = unstack(S,vars,ivar,Name,Value) преобразовывает таблицу или расписание S с дополнительными опциями, заданными одним или несколькими Name,Value парные аргументы.

Например, можно задать как unstack преобразует переменные из S к переменным в U.

пример

[U,is] = unstack(___) также возвращает вектор индекса, is, указание на соответствие между строками в U и строки в S. Можно использовать любой из предыдущих входных параметров.

Примеры

свернуть все

Составьте таблицу, указывающую на сумму снегопада в различных городах для различных штормов.

Storm = [3;3;1;3;1;1;4;2;4;2;4;2];
Town = {'T1';'T3';'T1';'T2';'T2';'T3';...
    'T2';'T1';'T3';'T3';'T1';'T2'};
Snowfall = [0;3;5;5;9;10;12;13;15;16;17;21];

S = table(Storm,Town,Snowfall)
S=12×3 table
    Storm     Town     Snowfall
    _____    ______    ________

      3      {'T1'}        0   
      3      {'T3'}        3   
      1      {'T1'}        5   
      3      {'T2'}        5   
      1      {'T2'}        9   
      1      {'T3'}       10   
      4      {'T2'}       12   
      2      {'T1'}       13   
      4      {'T3'}       15   
      2      {'T3'}       16   
      4      {'T1'}       17   
      2      {'T2'}       21   

S содержит три записи снегопада для каждого шторма, один для каждого города. S находится в сложенном формате.

Разделите переменную Snowfall в три переменные, один для каждого города, заданного в переменной, Town. Выходная таблица, U, находится в распакованном формате.

U = unstack(S,'Snowfall','Town')
U=4×4 table
    Storm    T1    T2    T3
    _____    __    __    __

      3       0     5     3
      1       5     9    10
      4      17    12    15
      2      13    21    16

Каждая строка в U содержит данные из строк в S это имеет то же значение в сгруппированной переменной, Storm. Порядок уникальных значений в Storm определяет порядок данных в U.

Распакуйте данные и примените функцию агрегации к нескольким строкам в той же группе, которые имеют те же значения в переменной индикатора.

Составьте таблицу, содержащую данные по цене двух запасов более чем 2 дня.

Date = [repmat({'4/12/2008'},6,1);...
    repmat({'4/13/2008'},5,1)];
Stock = {'Stock1';'Stock2';'Stock1';'Stock2';...
    'Stock2';'Stock2';'Stock1';'Stock2';...
    'Stock2';'Stock1';'Stock2'};
Price = [60.35;27.68;64.19;25.47;28.11;27.98;...
    63.85;27.55;26.43;65.73;25.94];

S = table(Date,Stock,Price)
S=11×3 table
        Date           Stock       Price
    _____________    __________    _____

    {'4/12/2008'}    {'Stock1'}    60.35
    {'4/12/2008'}    {'Stock2'}    27.68
    {'4/12/2008'}    {'Stock1'}    64.19
    {'4/12/2008'}    {'Stock2'}    25.47
    {'4/12/2008'}    {'Stock2'}    28.11
    {'4/12/2008'}    {'Stock2'}    27.98
    {'4/13/2008'}    {'Stock1'}    63.85
    {'4/13/2008'}    {'Stock2'}    27.55
    {'4/13/2008'}    {'Stock2'}    26.43
    {'4/13/2008'}    {'Stock1'}    65.73
    {'4/13/2008'}    {'Stock2'}    25.94

S содержит две цены на STOCK1 в течение первого дня и четырех цен на STOCK2 в течение первого дня.

Составьте таблицу, содержащую отдельные переменные для каждого запаса и одну строку в течение каждого дня. Используйте Date как сгруппированная переменная и применяют функцию агрегации, @mean, к числовым значениям от переменной, Price, для каждой группы.

[U,is] = unstack(S,'Price','Stock',...
    'AggregationFunction',@mean)
U=2×3 table
        Date         Stock1    Stock2
    _____________    ______    ______

    {'4/12/2008'}    62.27     27.31 
    {'4/13/2008'}    64.79     26.64 

is = 2×1

     1
     7

U содержит среднюю стоимость каждого запаса, сгруппированного по дате.

is идентифицирует индекс первого значения для каждой группы строк в S. Первое значение для группы '4/13/2008' находится в седьмой строке S.

Входные параметры

свернуть все

Входная таблица, заданная как таблица или расписание. S должен содержать переменные данных, чтобы распаковать, vars, и переменная индикатора, ivar. Остающиеся переменные в S может быть обработан или как сгруппированные переменные или как постоянные переменные.

Переменные в S распаковать, заданный как положительное целое число, вектор положительных целых чисел, вектора символов, массива ячеек из символьных векторов, массива строк или логического вектора.

Переменная Indicator в S, заданный как положительное целое число, вектор символов или скаляр строки. Значения в переменной заданы ivar укажите который переменные в U содержите элементы, взятые из переменных, заданных vars.

Переменная задана ivar может быть числовой вектор, логический вектор, символьный массив, массив ячеек из символьных векторов, массив строк или категориальный вектор.

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'AggregationFunction',@mean применяет функцию агрегации @mean к значениям в vars.

Сгруппированные переменные в S это задает группы строк, заданных как разделенная запятой пара, состоящая из 'GroupingVariables' и положительное целое число, вектор положительных целых чисел, вектора символов, массива ячеек из символьных векторов, массива строк или логического вектора. Каждая группа строк в S становится одной строкой в U.

S может иметь метки строки по ее первому измерению. Если S таблица, затем она может иметь имена строки как метки. Если S расписание, затем оно должно иметь времена строки как метки. unstack может обработать метки строки как сгруппированные переменные.

  • Если вы не задаете 'GroupingVariables', и S расписание, затем unstack обрабатывает времена строки как сгруппированную переменную.

  • Если вы задаете 'GroupingVariables', и S имеет имена строки или времена строки, затем unstack не обрабатывает их как сгруппированные переменные, если вы не включаете их в значение 'GroupingVariables'.

Переменные, постоянные в группе, заданной как разделенная запятой пара, состоящая из 'ConstantVariables' и положительное целое число, вектор положительных целых чисел, вектора символов, массива ячеек из символьных векторов, массива строк или логического вектора.

Значения для этих переменных в U взяты из первой строки в каждой группе в S.

Можно включить имена строк или времена строки S когда вы задаете значение 'ConstantVariables'.

Имена для новых переменных данных в U, заданный как разделенная запятой пара, состоящая из 'NewDataVariableNames' и массив ячеек из символьных векторов или массив строк.

Если вы не задаете 'NewDataVariableNames', затем unstack создает имена для новых переменных данных в U на основе значений в переменной индикатора, заданной ivar.

Функция агрегации от значений в vars к одному значению, заданному как разделенная запятой пара, состоящая из 'AggregationFunction' и указатель на функцию. unstack применяет эту функцию к строкам от той же группы, которые имеют то же значение в ivar. Функция должна агрегировать значения данных в одно значение.

Для переменной числовых данных значением по умолчанию является @sum. Для нечисловых переменных нет никакой функции по умолчанию, и необходимо задать 'AggregationFunction' аргумент пары "имя-значение", если несколько строк в той же группе имеют то же значение в ivar.

Выходные аргументы

свернуть все

Выведите таблицу, возвращенную как таблица или расписание. U содержит распакованные переменные данных, сгруппированные переменные и первое значение каждой группы от любых постоянных переменных.

Порядок данных в U основан на порядке уникальных значений в сгруппированных переменных.

Можно сохранить дополнительные метаданные, такие как описания, переменные модули, имена переменных и имена строки в U. Для получения дополнительной информации смотрите разделы Свойств table или timetable.

Индексируйте к S, возвращенный как вектор-столбец. Для каждой строки в U, вектор индекса, is, идентифицирует индекс первого значения в соответствующей группе строк в S.

Больше о

свернуть все

Группировка переменных

Сгруппированные переменные являются служебными переменными, используемыми, чтобы сгруппировать, или категоризировать, данные. Сгруппированные переменные полезны для суммирования или визуализации данных группой. Можно задать группы в таблице путем определения одной или нескольких сгруппированных переменных.

Сгруппированная переменная может быть любым следующим:

  • Категориальный вектор

  • Массив ячеек из символьных векторов

  • Массив строк

  • Массив символов

  • Числовой вектор, обычно содержащий положительные целые числа

  • Логический вектор

Строки, которые имеют то же значение сгруппированной переменной, принадлежат той же группе. Если вы используете несколько сгруппированных переменных, строки, которые имеют ту же комбинацию значений сгруппированной переменной, принадлежат той же группе.

Советы

  • Можно задать больше чем одну переменную данных в S, и каждая переменная становится набором распакованных переменных данных в U. Используйте вектор положительных целых чисел, массива ячеек или массива строк, содержащего несколько имен переменных или логический вектор, чтобы задать vars. Одна переменная индикатора, заданная входным параметром, ivar, применяется ко всем переменным данных, задает vars.

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

|

Введенный в R2013b