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(T,groupvars,groupbins,method,___,'IncludedEdge',LR) задает включенное ребро интервала как 'left' или 'right' указать, какой конец интервала интервала является содержащим когда 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 array
     Thursday 
     Wednesday 
     Friday 
     Saturday 
     Tuesday 

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

свернуть все

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

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

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

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

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

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

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

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

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

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

Пример: 'Age'

Пример: {'Height','Weight'}

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

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 указывает, какие столбцы входной таблицы применить методы к, и может быть одна из следующих опций:

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

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

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

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

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

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

Пример: 'Profit'

Пример: {'Income','Expenses'}

Пример: @isnumeric

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

свернуть все

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

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

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

Введенный в R2019b