нестек

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

Синтаксис

U = unstack(S,vars,ivar)
U = unstack(S,vars,ivar,Name,Value)
[U,is] = 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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.

Больше о

свернуть все

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

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

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

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

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

  • StringArray

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

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

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

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

Советы

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

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

|

Введенный в R2013b