exponenta event banner

groupfilter

Фильтровать по группам

Описание

пример

G = groupfilter(T,groupvars,method) фильтрует данные в таблице или расписании в соответствии с вычислениями в method, группирование по уникальным комбинациям переменных группирования, указанным в groupvars. method аргумент - дескриптор функции, который работает с каждой переменной nongrouping. Продукция G является таблицей или расписанием, содержащим только строки T которые удовлетворяют условию в method. Например, G = groupfilter(T,'Trial',@(x) numel(x) > 5) группирует данные в T около Trial, сохраняя строки, которые принадлежат группам с более чем пятью испытаниями.

пример

G = groupfilter(T,groupvars,groupbins,method) складирует данные в соответствии с groupbins перед применением фильтра, горизонтально объединяя группы с выходной таблицей. Например, G = groupfilter(T,'SaleDate','year',@(x) numel(x) > 5) складирует данные в SaleDate по годам и сохраняет строки, ячейка которых содержит более пяти элементов.

пример

G = groupfilter(___,datavars) указывает переменные таблицы, к которым применяется фильтр для любого из предыдущих синтаксисов. Например, G = groupfilter(T,'Trial',@(x) x == max(x),'Height') сохраняет строки T соответствует максимальной высоте для каждого испытания.

G = groupfilter(___,'IncludedEdge',LR) определяет включенное ребро ячейки как 'left' или 'right' для указания того, какой конец интервала ячейки включен. Вы можете использовать 'IncludeEdge' с любым предыдущим синтаксисом, который указывает groupbins.

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

пример

B = groupfilter(A,groupvars,groupbins,method) складирует данные в соответствии с groupbins.

B = groupfilter(A,groupvars,groupbins,method,'IncludedEdge',LR) указывает, следует ли включать левое или правое ребро в каждую ячейку groupbins указывается.

пример

[B,BG] = groupfilter(A,___) также возвращает строки векторов группировки, соответствующие нефильтрованным строкам в A.

Примеры

свернуть все

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

groupID = [1 1 1 2 2 3]';
sample = [3 1 2 9 8 5]';
T = table(groupID,sample)
T=6×2 table
    groupID    sample
    _______    ______

       1         3   
       1         1   
       1         2   
       2         9   
       2         8   
       3         5   

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

Gnumel = groupfilter(T,'groupID',@(x) numel(x) > 2)
Gnumel=3×2 table
    groupID    sample
    _______    ______

       1         3   
       1         1   
       1         2   

Возвращает только строки с групповыми выборками от 0 до 6.

Gvals = groupfilter(T,'groupID',@(x) min(x) > 0 && max(x) < 6)
Gvals=4×2 table
    groupID    sample
    _______    ______

       1         3   
       1         1   
       1         2   
       3         5   

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

daynum = [1 1 1 1 2 2 2 2]';
temp = [67 65 71 55 61 79 58 78]';
T = table(daynum,temp)
T=8×2 table
    daynum    temp
    ______    ____

      1        67 
      1        65 
      1        71 
      1        55 
      2        61 
      2        79 
      2        58 
      2        78 

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

G = groupfilter(T,'daynum',@(x) ismember(x,maxk(x,2)))
G=4×2 table
    daynum    temp
    ______    ____

      1        67 
      1        71 
      2        79 
      2        78 

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

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

    04-Mar-2017     2032 
    02-Mar-2017     3071 
    15-Mar-2017     1185 
    10-Apr-2017     2587 
    14-Apr-2017     1998 
    30-Apr-2017     2899 
    25-May-2017     3112 
    29-May-2017      909 
    21-May-2017     2619 

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

Gmax = groupfilter(T,'timeStamps','month',@(x) x == max(x))
Gmax=3×3 table
    timeStamps     profit    month_timeStamps
    ___________    ______    ________________

    02-Mar-2017     3071         Mar-2017    
    30-Apr-2017     2899         Apr-2017    
    25-May-2017     3112         May-2017    

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

Gavg = groupfilter(T,'timeStamps','month',@(x) mean(x) > 2300)
Gavg=3×3 table
    timeStamps     profit    month_timeStamps
    ___________    ______    ________________

    10-Apr-2017     2587         Apr-2017    
    14-Apr-2017     1998         Apr-2017    
    30-Apr-2017     2899         Apr-2017    

Создайте таблицу, содержащую три переменные.

groupID = [1 2 3 1 2 3 1 2 3]';
height = [62 61 59 66 70 72 57 67 71]';
gender = ["M" "F" "F" "M" "M" "F" "M" "M" "M"]';
T = table(groupID,height,gender)
T=9×3 table
    groupID    height    gender
    _______    ______    ______

       1         62       "M"  
       2         61       "F"  
       3         59       "F"  
       1         66       "M"  
       2         70       "M"  
       3         72       "F"  
       1         57       "M"  
       2         67       "M"  
       3         71       "M"  

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

G1 = groupfilter(T,'groupID',@(x) min(x) >= 60,'height')
G1=3×3 table
    groupID    height    gender
    _______    ______    ______

       2         61       "F"  
       2         70       "M"  
       2         67       "M"  

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

G2 = groupfilter(T,'groupID',@(x) all(x == "M"),'gender')
G2=3×3 table
    groupID    height    gender
    _______    ______    ______

       1         62       "M"  
       1         66       "M"  
       1         57       "M"  

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

G3 = groupfilter(T,{'groupID','gender'},@(x) x == max(x))
G3=5×3 table
    groupID    height    gender
    _______    ______    ______

       2         61       "F"  
       1         66       "M"  
       2         70       "M"  
       3         72       "F"  
       3         71       "M"  

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

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]';

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

[maxDailyProfit,dayOfWeek] = groupfilter(profit,timeStamps,'dayname',@(x) x == max(x))
maxDailyProfit = 5×1

        3071
        1185
        2899
        3112
        2619

dayOfWeek = 5x1 categorical
     Thursday 
     Wednesday 
     Friday 
     Saturday 
     Tuesday 

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

свернуть все

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

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

Группирование переменных или векторов, указанных в качестве одной из следующих опций:

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

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

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

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

    'Var1'

    "Var1"

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

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

    {'Var1' 'Var2'}

    ["Var1" "Var2"]

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

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

    1

    [1 3 5]

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

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

    [true false true]

    Дескриптор функции

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

    @isnumeric

    vartype нижний индекс

    Подстрочный индекс таблицы, созданный vartype функция

    vartype('numeric')

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

Метод вычисления, заданный как дескриптор функции.

method определяет функцию, используемую для фильтрации элементов из каждой группы. Функция должна возвращать логический скаляр или вектор логического столбца с тем же количеством строк, что и входные данные, указывающие, какие члены группы следует выбрать. Если функция возвращает логический скаляр, то либо все члены группы отфильтровываются (если значение равно false) или ни один не отфильтрован (если значение равно true). Если функция возвращает логический вектор, то члены групп отфильтровываются, когда соответствующий элемент false. Элементы сохраняются, когда соответствующий элемент true.

Чтобы определить дескриптор функции, используйте синтаксис формы @(inputargs) myfunc где myfunc зависит от inputargs. Например, @(x) mean(x) обозначает переменную x в качестве входного аргумента для mean функция. Затем можно определить условие для фильтрации, например: @(x) mean(x) > 10, который возвращает логический скаляр. Это вычисление сохраняет строки, группа которых имеет среднее значение больше 10. Дополнительные сведения см. в разделах Создание дескриптора функции и Анонимные функции.

Когда groupfilter применяет метод к нескольким переменным nongrouping одновременно, метод должен возвращать true для каждой переменной, чтобы сохранить строку.

Схема 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]}.

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

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

Переменные таблицы для работы, указанные как один из параметров в этой таблице. datavars указывает, к каким переменным входной таблицы или расписания применяются методы фильтрации. Другие переменные в таблице, не указанные datavars пройти на выход без работы. groupfilter применяет методы фильтрации к указанным переменным и использует результаты для удаления строк из всех переменных. Когда datavars не указан, groupfilter оперирует с каждой переменной nongrouping.

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

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

'Var1'

"Var1"

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

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

{'Var1' 'Var2'}

["Var1" "Var2"]

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

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

1

[1 3 5]

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

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

[true false true]

Дескриптор функции

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

@isnumeric

vartype нижний индекс

Подстрочный индекс таблицы, созданный vartype функция

vartype('numeric')

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

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

свернуть все

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

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

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

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

Представлен в R2019b