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

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

пример

G = findgroups(A1,...,AN) создает номера групп из A1,...,AN. The 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. The 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 не нужно иметь одинаковое число строк.

Подробнее о

свернуть все

Рабочий процесс «Разделение-Применение-Объединение»

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

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

Введенный в R2015b