groupfilter

Фильтр по группе

Описание

пример

G = groupfilter(T,groupvars,method) фильтрует данные в таблице или расписании согласно расчету в method, группировка уникальными комбинациями сгруппированных переменных задана в groupvars. method аргумент является указателем на функцию, который работает с каждой переменной негруппировки. Выход 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    

Возвратите строки, месяц которых имел среднюю прибыль, больше, чем 2 300$.

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

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

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

'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