нестек

Не сложите данные от единственной переменной в несколько переменных

Синтаксис

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, чтобы не сложить, заданный как положительное целое число, вектор положительных целых чисел, вектора символа, массива ячеек из символьных векторов, массива строк или логического вектора.

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

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

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

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

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

Группировка переменных в 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

Была ли эта тема полезной?