exponenta event banner

findgroups

Поиск групп и возврат номеров групп

Описание

пример

G = findgroups(A) прибыль G, вектор номеров групп, созданный из переменной группирования A. Выходной аргумент G содержит целочисленные значения от 1 до N, с указанием N отдельные группы для N уникальные значения в A. Например, если A является {'b','a','a','b'}, то findgroups прибыль G как [2 1 1 2]. Вы можете использовать G для разделения групп данных из других переменных. Использовать G в качестве входного аргумента для splitapply в рабочем процессе Split-Apply-Combine.

findgroups обрабатывает пустые векторы символов и NaN, NaTи неопределенные категориальные значения в A как отсутствующие значения и возвраты NaN в качестве соответствующих элементов G.

пример

G = findgroups(A1,...,AN) создает номера групп из A1,...,AN. findgroups функция определяет группы как уникальные комбинации значений A1,...,AN. Например, если A1 является {'a','a','b','b'} и A2 является [0 1 0 0], то findgroups(A1,A2) прибыль G как [1 2 3 3], потому что комбинация 'b' 0 происходит дважды.

пример

[G,ID] = findgroups(A) также возвращает уникальные значения для каждой группы в ID. Например, если A является {'b','a','a','b'}, то findgroups прибыль G как [2 1 1 2] и ID как {'a','b'}. Аргументы A и ID имеют один и тот же тип данных, но не обязательно имеют одинаковый размер.

пример

[G,ID1,...,IDN] = findgroups(A1,...,AN) также возвращает уникальные значения для каждой группы ID1,...,IDN. Значения по всему ID1,...,IDN определите группы. Например, если A1 является {'a','a','b','b'} и A2 является [0 1 0 0], то findgroups(A1,A2) прибыль G как [1 2 3 3], и ID1 и ID2 как {'a','a','b'} и [0 1 0].

пример

G = findgroups(T) прибыль G, вектор номеров групп, созданных из переменных в таблице T. findgroups функция обрабатывает все переменные в T в качестве группируемых переменных.

пример

[G,TID] = findgroups(T) также возвращает TID, таблица, содержащая уникальные значения для каждой группы. TID содержит уникальные комбинации значений для переменных T. Переменные в T и TID имеют одинаковые имена, но таблицы не должны иметь одинаковое количество строк.

Примеры

свернуть все

Используйте номера групп, чтобы разделить измерения высоты пациента на группы по полу. Затем вычислите среднюю высоту для каждой группы.

Загрузка высоты пациента и пола из файла данных patients.mat.

load patients
whos Gender Height
  Name          Size            Bytes  Class     Attributes

  Gender      100x1             11412  cell                
  Height      100x1               800  double              

Укажите группы по полу с findgroups.

G = findgroups(Gender);

Сравните первые пять элементов Gender и G. Где Gender содержит 'Female', G содержит 1. Где Gender содержит 'Male', G содержит 2.

Gender(1:5)
ans = 5x1 cell
    {'Male'  }
    {'Male'  }
    {'Female'}
    {'Female'}
    {'Female'}

G(1:5)
ans = 5×1

     2
     2
     1
     1
     1

Разделить Height переменная на две группы высот с использованием G. Применить mean функция. Группы содержат средние высоты пациентов женского и мужского пола соответственно.

splitapply(@mean,Height,G)
ans = 2×1

   65.1509
   69.2340

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

Загрузить показания артериального давления, пол и данные о курении для пациентов из файла данных patients.mat.

load patients
whos Systolic Diastolic Gender Smoker
  Name             Size            Bytes  Class      Attributes

  Diastolic      100x1               800  double               
  Gender         100x1             11412  cell                 
  Smoker         100x1               100  logical              
  Systolic       100x1               800  double               

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

G = findgroups(Smoker,Gender);
G(1:10)
ans = 10×1

     4
     2
     1
     1
     1
     1
     3
     2
     2
     1

Рассчитайте среднее кровяное давление для каждой группы.

meanSystolic = splitapply(@mean,Systolic,G);
meanDiastolic = splitapply(@mean,Diastolic,G);
mBP = [meanSystolic,meanDiastolic]
mBP = 4×2

  119.4250   79.0500
  119.3462   79.8846
  129.0000   89.2308
  129.5714   90.3333

Рассчитайте средние высоты для групп пациентов и просмотрите результаты в таблице. Чтобы определить группы пациентов, используйте дополнительный аргумент вывода из findgroups.

Загрузка высоты пациента и пола из файла данных patients.mat.

load patients
whos Gender Height
  Name          Size            Bytes  Class     Attributes

  Gender      100x1             11412  cell                
  Height      100x1               800  double              

Укажите группы по полу с findgroups. Значения в выходном аргументе gender определить группы, которые findgroups находит в переменной группировки.

[G,gender] = findgroups(Gender);

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

medianHeight = splitapply(@median,Height,G);
T = table(gender,medianHeight)
T=2×2 table
      gender      medianHeight
    __________    ____________

    {'Female'}         65     
    {'Male'  }         69     

Рассчитайте среднее кровяное давление для групп пациентов и отобразите результаты в таблице. Чтобы определить группы пациентов, используйте дополнительные выходные аргументы из findgroups.

Загрузить показания артериального давления, пол и данные о курении для 100 пациентов из файла данных patients.mat.

load patients
whos Systolic Diastolic Gender Smoker
  Name             Size            Bytes  Class      Attributes

  Diastolic      100x1               800  double               
  Gender         100x1             11412  cell                 
  Smoker         100x1               100  logical              
  Systolic       100x1               800  double               

Укажите группы, использующие гендерную и курительную информацию о пациентах. Рассчитайте среднее кровяное давление для каждой группы. Значения для выходных аргументов gender и smoker определить группы, которые findgroups находит в переменных группировки.

[G,gender,smoker] = findgroups(Gender,Smoker);
meanSystolic = splitapply(@mean,Systolic,G);
meanDiastolic = splitapply(@mean,Diastolic,G);

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

T = table(gender,smoker,meanSystolic,meanDiastolic)
T=4×4 table
      gender      smoker    meanSystolic    meanDiastolic
    __________    ______    ____________    _____________

    {'Female'}    false        119.42           79.05    
    {'Female'}    true            129          89.231    
    {'Male'  }    false        119.35          79.885    
    {'Male'  }    true         129.57          90.333    

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

Загрузите данные по полу и курению для 100 пациентов в таблицу.

load patients
T = table(Gender,Smoker);
T(1:5,:)
ans=5×2 table
      Gender      Smoker
    __________    ______

    {'Male'  }    true  
    {'Male'  }    false 
    {'Female'}    false 
    {'Female'}    false 
    {'Female'}    false 

Укажите группы пациентов, используя Gender и Smoker переменные в T.

G = findgroups(T);

Рассчитать среднее кровяное давление по переменным данных Systolic и Diastolic.

meanSystolic = splitapply(@mean,Systolic,G);
meanDiastolic = splitapply(@mean,Diastolic,G);
mBP = [meanSystolic,meanDiastolic]
mBP = 4×2

  119.4250   79.0500
  129.0000   89.2308
  119.3462   79.8846
  129.5714   90.3333

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

Загрузить данные по полу и курению для пациентов в таблицу.

load patients
T = table(Gender,Smoker);

Укажите группы пациентов, используя Gender и Smoker переменные в T. Выходная таблица TID определяет группы.

[G,TID] = findgroups(T);
TID
TID=4×2 table
      Gender      Smoker
    __________    ______

    {'Female'}    false 
    {'Female'}    true  
    {'Male'  }    false 
    {'Male'  }    true  

Рассчитать среднее кровяное давление по переменным данных Systolic и Diastolic. Добавить среднее кровяное давление к TID.

TID.meanSystolic = splitapply(@mean,Systolic,G);
TID.meanDiastolic = splitapply(@mean,Diastolic,G)
TID=4×4 table
      Gender      Smoker    meanSystolic    meanDiastolic
    __________    ______    ____________    _____________

    {'Female'}    false        119.42           79.05    
    {'Female'}    true            129          89.231    
    {'Male'  }    false        119.35          79.885    
    {'Male'  }    true         129.57          90.333    

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

свернуть все

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

Если A является вектором, то он может быть числовым или типа данных categorical, calendarDuration, datetime, duration, logical, или string.

Группирование переменных, указанных как таблица. findgroups обрабатывает каждую табличную переменную как отдельную переменную группировки. Переменные могут быть числовыми или иметь тип данных categorical, calendarDuration, datetime, duration, logical, или string.

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

свернуть все

Групповые числа, возвращаемые как вектор положительных целых чисел. Для N группы, определенные в переменных группировки, каждое целое число от 1 до N задает группу. G содержит NaN где любая группирующая переменная содержит пустой символьный вектор или NaN, NaT, или неопределенное категориальное значение.

  • Если переменные группировки являются векторами, то G и все переменные группировки имеют одинаковый размер.

  • Если переменные группирования находятся в таблице, длина G равно количеству строк таблицы.

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

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

Подробнее

свернуть все

Разделение-применение-комбинирование рабочего процесса

Рабочий процесс Split-Apply-Combine является обычным в анализе данных. В этом потоке операций аналитик разбивает данные на группы, применяет функцию к каждой группе и объединяет результаты. На диаграмме показан типичный пример рабочего процесса и его части, реализованные findgroups и splitapply.

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

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