grouptransform

Преобразуйте группой

Описание

пример

G = grouptransform(T,groupvars,method) преобразовывает данные в таблицу или расписание с помощью расчета в method, группировка переменными задана в groupvars. Выход G таблица или расписание, содержащее преобразованные данные вместо негруппирующихся переменных из T. Например, G = grouptransform(T,'Gender','norm') нормирует данные в T полом с помощью 2-нормы.

пример

G = grouptransform(T,groupvars,groupbins,method) интервалы преобразованные данные согласно groupbins, размещение групп в конце выходной таблицы как дополнительные переменные. Например, G = grouptransform(T,'SaleDate','year','rescale') масштабирует данные в T к области значений [0,1] и интервалы к году продаж.

G = grouptransform(___,datavars) задает табличные переменные, чтобы преобразовать для любого из предыдущих синтаксисов.

пример

G = grouptransform(___,Name,Value) задает дополнительные свойства группировки с помощью одной или нескольких пар "имя-значение". Например, G = grouptransform(T,'Temp','linearfill','ReplaceValues',false) добавляет заполненные данные как дополнительную переменную T вместо замены негруппирующихся переменных.

B = grouptransform(A,groupvars,method) возвращает преобразованные данные согласно уникальным комбинациям группирующихся векторов в groupvars когда A вектор или матрица. groupvars может быть вектор-столбец, матрица или массив ячеек вектор-столбцов.

пример

B = grouptransform(A,groupvars,groupbins,method) интервалы преобразованные данные согласно groupbins.

B = grouptransform(___,Name,Value) задает дополнительные свойства группировки с помощью одной или нескольких пар "имя-значение" для любого из предыдущих синтаксисов массивов.

пример

[B,BG] = grouptransform(A,___) также возвращает строки группирующихся векторов.

Примеры

свернуть все

Создайте расписание, содержащее состояние прогресса для 3 команд.

timeStamp = days([1 1 1 2 2 2 3 3 3]');
teamNumber = [1 2 3 1 2 3 1 2 3]';
percentComplete = [14.2 28.1 11.5 NaN NaN 19.3 46.1 51.2 30.3]';
T = timetable(timeStamp,teamNumber,percentComplete)
T=9×2 timetable
    timeStamp    teamNumber    percentComplete
    _________    __________    _______________

    1 day            1              14.2      
    1 day            2              28.1      
    1 day            3              11.5      
    2 days           1               NaN      
    2 days           2               NaN      
    2 days           3              19.3      
    3 days           1              46.1      
    3 days           2              51.2      
    3 days           3              30.3      

Заполните недостающие проценты состояния (NaN) для каждой группы, использующей линейную интерполяцию.

G = grouptransform(T,'teamNumber','linearfill','percentComplete')
G=9×2 timetable
    timeStamp    teamNumber    percentComplete
    _________    __________    _______________

    1 day            1               14.2     
    1 day            2               28.1     
    1 day            3               11.5     
    2 days           1              30.15     
    2 days           2              39.65     
    2 days           3               19.3     
    3 days           1               46.1     
    3 days           2               51.2     
    3 days           3               30.3     

Добавлять заполненные данные к исходной таблице вместо замены percentComplete переменная, используйте 'ReplaceValues' параметр.

Gappend = grouptransform(T,'teamNumber','linearfill','percentComplete','ReplaceValues',false)
Gappend=9×3 timetable
    timeStamp    teamNumber    percentComplete    linearfill_percentComplete
    _________    __________    _______________    __________________________

    1 day            1              14.2                     14.2           
    1 day            2              28.1                     28.1           
    1 day            3              11.5                     11.5           
    2 days           1               NaN                    30.15           
    2 days           2               NaN                    39.65           
    2 days           3              19.3                     19.3           
    3 days           1              46.1                     46.1           
    3 days           2              51.2                     51.2           
    3 days           3              30.3                     30.3           

Составьте таблицу дат и соответствующей прибыли.

timeStamps = datetime([2017 3 4; 2017 3 2; 2017 3 15; 2017 3 10;...
                       2017 3 14; 2017 3 31; 2017 3 25;...
                       2017 3 29; 2017 3 21; 2017 3 18]);
profit = [2032 3071 1185 2587 1998 2899 3112 909 2619 3085]';
T = table(timeStamps,profit)
T=10×2 table
    timeStamps     profit
    ___________    ______

    04-Mar-2017     2032 
    02-Mar-2017     3071 
    15-Mar-2017     1185 
    10-Mar-2017     2587 
    14-Mar-2017     1998 
    31-Mar-2017     2899 
    25-Mar-2017     3112 
    29-Mar-2017      909 
    21-Mar-2017     2619 
    18-Mar-2017     3085 

Группировка за день называет, нормирует прибыль на 2-норму.

G = grouptransform(T,'timeStamps','dayname','norm')
G=10×3 table
    timeStamps     profit     dayname_timeStamps
    ___________    _______    __________________

    04-Mar-2017    0.42069        Saturday      
    02-Mar-2017          1        Thursday      
    15-Mar-2017    0.79344        Wednesday     
    10-Mar-2017    0.66582        Friday        
    14-Mar-2017    0.60654        Tuesday       
    31-Mar-2017    0.74612        Friday        
    25-Mar-2017    0.64428        Saturday      
    29-Mar-2017    0.60864        Wednesday     
    21-Mar-2017    0.79506        Tuesday       
    18-Mar-2017    0.63869        Saturday      

Создайте вектор из дат и вектор из соответствующих значений прибыли.

timeStamps = datetime([2017 3 4; 2017 3 2; 2017 3 15; 2017 3 10; ...
                       2017 3 14; 2017 3 31; 2017 3 25; ...
                       2017 3 29; 2017 3 21; 2017 3 18]);
profit = [2032 3071 1185 2587 1998 2899 3112 909 2619 3085]';

При группировке за день недели, нормируйте значения прибыли на 2-норму. Отобразите преобразованные данные и какой группе они соответствуют.

[normDailyProfit,dayOfWeek] = grouptransform(profit,timeStamps,'dayname','norm')
normDailyProfit = 10×1

    0.4207
    1.0000
    0.7934
    0.6658
    0.6065
    0.7461
    0.6443
    0.6086
    0.7951
    0.6387

dayOfWeek = 10x1 categorical
     Saturday 
     Thursday 
     Wednesday 
     Friday 
     Tuesday 
     Friday 
     Saturday 
     Wednesday 
     Tuesday 
     Saturday 

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

свернуть все

Входные данные в виде таблицы или расписания.

Входной массив в виде вектора или матрицы.

Сгруппированные переменные или векторы в виде одной из этих опций:

  • Для входа массивов, groupvars может быть любой вектор-столбец с одинаковым числом строк как A или группа вектор-столбцов располагается в матричном или массиве ячеек.

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

    ОпцияОписаниеПримеры
    Имя переменной

    Вектор символов или скалярная строка, задающая одно имя табличной переменной

    'Var1'

    "Var1"

    Вектор из имен переменных

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

    {'Var1' 'Var2'}

    ["Var1" "Var2"]

    Скаляр или вектор из переменных индексов

    Скаляр или вектор из индексов табличной переменной

    1

    [1 3 5]

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

    Логический вектор, элементы которого каждый соответствует табличной переменной, где true включает соответствующую переменную и false исключает его

    [true false true]

    Указатель на функцию

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

    @isnumeric

    vartype индекс

    Табличный индекс, сгенерированный vartype функция

    vartype('numeric')

Пример: grouptransform(T,"Var3",method)

Метод расчета в виде одного из следующего:

Метод

Описание

'zscore'

Нормируйте данные, чтобы иметь среднее значение 0 и стандартное отклонение 1

'norm'

Нормируйте данные на 2-норму

'meancenter'

Нормируйте данные, чтобы иметь среднее значение 0

'rescale'

Перемасштабируйте область значений к [0,1]

'meanfill'

Заполните отсутствующие значения средним значением данных группы

'linearfill'

Заполните отсутствующие значения линейной интерполяцией ненедостающих данных группы

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

Типы данных: char | string | function_handle

Табличные переменные, чтобы работать с в виде одной из опций в этой таблице. datavars указывает который переменные входной таблицы или расписания, чтобы применить методы к. Другие переменные в таблице, не заданной datavars передайте до выхода без управления. Когда datavars не задан, grouptransform работает с каждой переменной негруппировки.

ОпцияОписаниеПримеры
Имя переменной

Вектор символов или скалярная строка, задающая одно имя табличной переменной

'Var1'

"Var1"

Вектор из имен переменных

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

{'Var1' 'Var2'}

["Var1" "Var2"]

Скаляр или вектор из переменных индексов

Скаляр или вектор из индексов табличной переменной

1

[1 3 5]

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

Логический вектор, элементы которого каждый соответствует табличной переменной, где true включает соответствующую переменную и false исключает его

[true false true]

Указатель на функцию

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

@isnumeric

vartype индекс

Табличный индекс, сгенерированный vartype функция

vartype('numeric')

Пример: grouptransform(T,groupvars,method,["Var1" "Var2" "Var4"])

Схема Binning в виде одной из следующих опций:

  • 'none', указание ни на какое раскладывание

  • Список границ интервала в виде числового вектора или datetime вектор для datetime группировка переменных

  • Много интервалов в виде целочисленного скаляра

  • Длительность времени в виде скаляра типа duration или calendarDuration указание на ширины интервала (для datetime или duration только сгруппированные переменные)

  • Массив ячеек, перечисляющий раскладывание, управляет для каждой сгруппированной переменной

  • Временной интервал для datetime и duration сгруппированные переменные только в виде одного из следующих векторов символов:

    ЗначениеОписаниеТип данных
    'second'

    Каждый интервал составляет 1 секунду.

    datetime и duration
    'minute'

    Каждый интервал составляет 1 минуту.

    datetime и duration
    'hour'

    Каждый интервал составляет 1 час.

    datetime и duration
    'day'

    Каждый интервал составляет 1 календарный день. Это значение учеты летнего времени, Сохраняющие Временные сдвиги.

    datetime и duration
    'week'Каждый интервал составляет 1 календарную неделю.datetime только
    'month'Каждый интервал составляет 1 календарный месяц.datetime только
    'quarter'Каждый интервал составляет 1 календарный квартал.datetime только
    'year'

    Каждый интервал составляет 1 календарный год. Это значение считает в течение дней прыжка.

    datetime и duration
    'decade'Каждый интервал составляет 1 десятилетие (10 календарных лет).datetime только
    'century'Каждый интервал является 1-м веком (100 календарных лет).datetime только
    'secondofminute'

    Интервалы являются секундами от 0 до 59.

    datetime только
    'minuteofhour'

    Интервалы являются минутами от 0 до 59.

    datetime только
    'hourofday'

    Интервалы являются часами от 0 до 23.

    datetime только
    'dayofweek'

    Интервалы являются днями от 1 до 7. Первый день недели является воскресеньем.

    datetime только
    'dayname'Интервалы являются полными дневными именами, такими как 'Sunday'.datetime только
    'dayofmonth'Интервалы являются днями от 1 до 31.datetime только
    'dayofyear'Интервалы являются днями от 1 до 366.datetime только
    'weekofmonth'Интервалы являются неделями от 1 до 6.datetime только
    'weekofyear'Интервалы являются неделями от 1 до 54.datetime только
    'monthname'Интервалы являются полными именами месяца, такими как 'January'.datetime только
    'monthofyear'

    Интервалы являются месяцами от 1 до 12.

    datetime только
    'quarterofyear'Интервалы являются четвертями от 1 до 4.datetime только

Когда несколько сгруппированных переменных заданы, можно предоставить одно правило раскладывания, которое применяется ко всем сгруппированным переменным или массиву ячеек, содержащему метод раскладывания для каждой сгруппированной переменной, таким как {'none',[0 2 4 Inf]}.

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

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

Пример: G = grouptransform(T,groupvars,groupbins,'zscore','IncludedEdge','right')

Включенная граница интервала в виде любого 'left' или 'right', указание, какой конец интервала интервала является включенным.

Эта пара "имя-значение" может только быть задана когда groupbins задан, и значение применяется ко всем схемам раскладывания всех сгруппированных переменных или векторов.

Преобразуйте индикатор размещения в виде числового или логического 1 TRUE) или 0 ложь). Когда значением параметров является true, grouptransform выводит таблицу или массив с преобразованными данными вместо негруппирующихся переменных или векторов от входа. Когда значением параметров является false, grouptransform добавляет преобразованные данные как дополнительные столбцы матрицы или табличные переменные к входным данным.

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

свернуть все

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

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

Группировка векторов для входных данных массивов, возвращенных как вектор-столбец или массив ячеек вектор-столбцов.

Советы

  • При совершении многих вызовов к grouptransform, полагайте, что сгруппированные переменные преобразования вводят categorical или logical если это возможно, для улучшенной производительности. Например, если у вас есть сгруппированная переменная типа char (такие как Gender с элементами 'Male' и 'Female'), можно преобразовать его в категориальное значение с помощью команды categorical(Gender).

Расширенные возможности

Введенный в R2018b