grouptransform

Преобразование группой

Синтаксис

G = grouptransform(T,groupvars,method)
G = grouptransform(T,groupvars,groupbins,method)
G = grouptransform(___,datavars)
G = grouptransform(___,Name,Value)

Описание

пример

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) задает переменные в datavars, чтобы преобразовать.

пример

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

Примеры

свернуть все

Создайте расписание, содержащее состояние прогресса для 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      

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

свернуть все

Входные данные, заданные как таблица или расписание.

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

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

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

  • Вектор индексов табличной переменной

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

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

Пример: 'Возраст'

Пример: {'Высота', 'Вес'}

Метод вычисления, заданный как одно из следующего:

Метод

Описание

'zscore'

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

норма

Нормализуйте данные с 2 нормами

'meancenter'

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

перешкала

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

'meanfill'

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

'linearfill'

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

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

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

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

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

  • Вектор индексов табличной переменной

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

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

Когда datavars не задан, grouptransform применяет вычисления к каждой переменной негруппировки.

Пример: 'Прибыль'

Пример: {'Поступают', 'Расходы'}

Пример: isnumeric

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

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

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

  • Много интервалов, заданных как целочисленный скаляр

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

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

    ЗначениеОписаниеТип данных
    второй

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

    datetime и duration
    минута

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

    datetime и duration
    час

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

    datetime и duration
    день

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

    datetime и duration
    неделяКаждый интервал составляет 1 календарную неделю.datetime только
    месяцКаждый интервал составляет 1 календарный месяц.datetime только
    четвертьКаждый интервал составляет 1 календарный квартал.datetime только
    год

    Каждый интервал составляет 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) — соответствующее значение. Имя должно появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: G = grouptransform (T, groupvars, groupbins, 'zscore', 'IncludedEdge', 'право')

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

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

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

Типы данных: логический

Советы

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

Представленный в R2018b