findgroups

Найдите группы и возвратите числа группы

Синтаксис

G = findgroups(A)
G = findgroups(A1,...,AN)
[G,ID] = findgroups(A)
[G,ID1,...,IDN] = findgroups(A1,...,AN)
G = findgroups(T)
[G,TID] = findgroups(T)

Описание

пример

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 в рабочем процессе "Разделение-Применение-Объединение".

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             12212  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 array
    {'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             12212  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             12212  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             12212  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 не должны иметь одинакового числа строк.

Больше о

свернуть все

Рабочий процесс "разделение применяет объединение

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

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

Введенный в R2015b