主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

groupfilter

グループによるフィルター処理

説明

G= groupfilter (Tgroupvars方法は,方法の計算に従って表または时间表のデータをフィルター処理し,groupvarsで指定されたグループ化変数の一意の組み合わせによりグループ化します。引数方法は,それぞれの非グループ化変数を処理する関数ハンドルです。出力Gは,方法の条件を満たすTの行のみを含む表または时间表です。たとえば,G = groupfilter(T,'Trial',@(x) numel(x) > 5)は,Tのデータを试验別にグループ化し,試行数が5を超えるグループに属する行を保持します。

G= groupfilter (Tgroupvarsgroupbins方法groupbinsに従ってデータをビン化してから,グループを出力表の横方向に連結します。たとえば,G = groupfilter(T,'销售日期','年份',@(x) numel(x) > 5)は,SaleDateのデータを年別にビン化し,要素数が5を超えるビンの行を保持します。

G= groupfilter (___datavarsは,前述の構文のいずれかについて,フィルターを適用する表変数を指定します。たとえば,G = groupfilter (T,“审判”,@ x (x) = = max (x),“高”)は,各試行の最大高さに対応するTの行を保持します。

G= groupfilter (___“IncludedEdge”,LRは,ビンのエッジを“左”または“对”として指定し,ビン区間のいずれの端が含まれるかを示します。groupbinsを指定する前述のどの構文でも“IncludeEdge”を使用できます。

B= groupfilter (一个groupvars方法は,一个がベクトルまたは行列の場合に,groupvarsのグループ化ベクトルの一意の組み合わせに従ってデータをフィルター処理します。groupvarsは列ベクトル行,列,または列ベクトルの细胞配列にすることができます。出力Bは,方法で定義された条件を満たす一个の行を含む行列です。

B= groupfilter (一个groupvarsgroupbins方法は,groupbinsに従ってデータをビン化します。

B= groupfilter (一个groupvarsgroupbins方法“IncludedEdge”,LRは,groupbinsが指定された場合に各ビンに左右のエッジのいずれを含めるかを指定します。

BBG) = groupfilter (一个___は,一个のフィルター処理されていない行に対応するグループ化ベクトルの行も返します。

すべて折りたたむ

表2変数を含むを作成します。

groupID = [1 1 1 2 2 3]';样本= [3 1 2 9 8 5]';T =表(groupID、样品)
T =6×2表groupID样本_______ ______ 1 3 1 1 1 2 2 2 2 3 5

番ID号でグループ化し,サンプル数が2を超えるグループに対応する行のみを返します。

Gnumel = groupfilter (T)“groupID”,@(x) numel(x) > 2)
Gnumel =3×2表groupID样本_______ ______ 1 3 1 1 1 2

グループのサンプル数が0 ~ 6である行のみを返します。

Gvals = groupfilter (T)“groupID”,@(x) min(x) > 0 && max(x) < 6
Gvals =4×2表groupID样本_______ ______ 1 3 1 1 1 2 3 5

日番号と温度を表す2変数を含む表を作成します。

[1 1 1 2 2 2]';Temp = [67 65 71 55 61 79 58 78]';T =表(daynum、临时)
T =8×2表Daynum temp ______ ____ 1 67 1 65 1 71 1 55 2 61 2 79 2 58 2 78

日番号でグループ化し,それぞれの日の最も高い温度2値を返します。

G = groupfilter (T),“daynum”@ (x) ismember (x, maxk (x, 2)))
G =4×2表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]);利润= [2032 3071 1185 2587 1998 2899 3112 909 2619]';T =表(时间戳,利润)
T =9×2表timeStamps profit ___________ ______ 04- march -2017 2032 02- march -2017 3071 15- march -2017 1185 10- april -2017 2587 14- april -2017 1998 30- april -2017 2899 25-May-2017 3112 29-May-2017 909 21-May-2017 2619

日付を月でグループ化し,その月の最大利益に対応する行のみを返します。

Gmax = groupfilter (T)'时间戳'“月”,@(x) x == max(x))
Gmax =3×3表month_timeStamps ___________ ______ ________________ 02-Mar-2017 3071 3 -2017 30- 4 -2017 2899 4 -2017 25- 5- 2017 3112 5- 2017

平均利益が2300美元を超える月を含む行を返します。

Gavg = groupfilter (T)'时间戳'“月”,@(x) mean(x) > 2300)
Gavg =3×3表month_timeStamps ___________ ______ ________________ 10-Apr-2017 2587四月-2017 14-四月-2017 1998四月-2017 30-四月-2017 2899四月-2017

表3変数を含むを作成します。

groupID = [1 2 3 1 2 3 1 2 3]';Height = [62 61 59 66 70 72 57 67 71]';性别= [“M”“F”“F”“M”“M”“F”“M”“M”“M”]'t =表(GroupID,高度,性别)
T =9×3表groupID身高性别_______ ______ ______ 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"

番ID号でグループ化し,グループメンバーすべての身長が60以上の行を返します。

G1 = groupfilter (T)“groupID”,@(x) min(x) >= 60,“高度”
G1 =3×3表groupID高度性别  _______ ______ ______ 61“F”70“M”67“M”

グループメンバーすべてが男性である行を返します。

G2 = groupfilter (T)“groupID”@ (x)所有(x = =“M”),“性别”
G2 =3×3表groupID高度性别  _______ ______ ______ 62“M”66“M”1 57“M”

番ID号と性別でグループ化し,各グループで男性と女性の最大身長を含む行を返します。

G3 = groupfilter (T) {“groupID”“性别”},@(x) x == max(x))
G3 =5×3表groupID高度性别  _______ ______ ______ 61“F”66“M”70“M”71“M”72“F”3

日付のベクトルと,対応する利益額のベクトルを作成します。

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]);利润= [2032 3071 1185 2587 1998 2899 3112 909 2619 3085]';

曜日でグループ化し,各グループの最大利益を計算します。最大利益とその対応するグループを表示します。

[maxDailyProfit, dayOfWeek] = groupfilter(利润,时间戳,“dayname”,@(x) x == max(x))
maxDailyProfit =5×13071 1185 2899 3112 2619
dayOfWeek =5 x1分类星期四,星期三,星期五,星期六,星期二

入力引数

すべて折りたたむ

入力データ。表格または时间表として指定します。

入力配列。ベクトルまたは行列として指定します。

グループ化変数またはベクトル。次のオプションのいずれかとして指定します。

  • 配列入力の場合,groupvars一个と同じ行数をもつ列ベクトルか,行列内あるいは细胞配列内に配置した列ベクトルのグループのいずれかにすることができます。

  • 入力データが表または时间表の場合,groupvarsはデータ内のグループの計算にどの変数を使用するかを表します。グループ化変数は,次の表のオプションのいずれかを使用して指定できます。

    オプション 説明
    変数名

    単一の表変数名を指定する文字ベクトルまたはスカラー字符串

    “Var1”

    “Var1”

    変数名のベクトル

    各要素が表変数名である,文字ベクトルの细胞配列または字符串配列

    {“Var1”“Var2”}

    [" Var1”“Var2”)

    変数インデックスのスカラーまたはベクトル

    表変数インデックスのスカラーまたはベクトル

    1

    [1 3 5]

    逻辑ベクトル

    各要素が表変数に対応する逻辑ベクトル。真正的の場合は対応する変数を含めて,の場合は対応する変数を除外します。

    (真的假的真的)

    関数ハンドル

    入力として表変数をとり,逻辑スカラーを返す関数ハンドル

    @isnumeric

    vartype添字

    関数vartypeによって生成される表の添字

    vartype(数字)

例:groupfilter (T“Var3”方法)

計算方法。関数ハンドルとして指定します。

方法は,各グループからメンバーをフィルターで除外するために使用される関数を定義します。この関数は、逻辑スカラーを返すか,入力データと同じ行数をもち,選択するグループメンバーを示す逻辑列ベクトルを返さなければなりません。関数が逻辑スカラーを返す場合,グループのすべてのメンバーがフィルターで除外されるか(値がのとき),何も除外されません(値が真正的のとき)。関数が logical ベクトルを返す場合、対応する要素がであるグループメンバーがフィルターで除外されます。対応する要素が真正的であるメンバーが保持されます。

関数ハンドルを定義するには,@ myfunc (inputargs)の形式の構文を使用します。ここでmyfuncinputargsに依存します。たとえば,@(x)均值(x)は,変数xを関数意思の入力引数として指定します。次に,@(x) mean(x) >のようにフィルター処理の条件を定義できます。これは逻辑スカラーを返します。この計算は10を超える平均をもつグループの行を保持します。詳細については,関数ハンドルの作成無名関数を参照してください。

groupfilterが一度に複数の非グループ化変数を適用する場合,行を保持するために,メソッドは各変数について真正的を返さなければなりません。

次次のいずれかのオプションとしてしし

  • ビン化しないことを示す“没有”

  • 数値ベクトルまたはdatetimeベクトル(datetimeグループ化変数の場合)として指定されるビンエッジのリスト

  • 整数値スカラーとして指定されるビン数

  • ビンの幅を示す持续时间型またはcalendarDuration型のスカラーとして指定される時間範囲(datetimeまたは持续时间グループ化変数の場合のみ)

  • 各グループ化変数のビン化ルールをリストする细胞配列

  • 次のいずれかの文字ベクトルとして指定される時間ビン(datetimeまたは持续时间グループ化変数の場合のみ)

    説明 データ型
    “第二”

    各ビンは1秒です。

    datetime持续时间
    “一分钟”

    各ビンは1分です。

    datetime持续时间
    “小时”

    各ビンは1時間です。

    datetime持续时间
    “天”

    各ビンは1カレンダー日です。この値には,夏時間のシフトが考慮されます。

    datetime持续时间
    “周” 各ビンは1カレンダー週です。 datetimeのみ
    “月” 各ビンは1カレンダー月です。 datetimeのみ
    “季” 各ビンは1カレンダー四半期です。 datetimeのみ
    “年”

    各ビンは1カレンダー年です。この値には,うるう日が考慮されます。

    datetime持续时间
    “十年” 各ビンは10年(10カレンダー年)です。 datetimeのみ
    “世纪” 各ビンは1世紀(100カレンダー年)です。 datetimeのみ
    “secondofminute”

    ビンは0から59までの秒です。

    datetimeのみ
    “minuteofhour”

    ビンは0から59までの分です。

    datetimeのみ
    “hourofday”

    ビンは0から23までの時間です。

    datetimeのみ
    “dayofweek”

    ビンは1から7までの曜日です。週の始まりは日曜日です。

    datetimeのみ
    “dayname” ビンは“星期天”などの完全な曜日名です。 datetimeのみ
    “dayofmonth” ビンは1から31までの日です。 datetimeのみ
    “dayofyear” 366年ビンは1からまでの日です。 datetimeのみ
    “weekofmonth” ビンは1から6までの週です。 datetimeのみ
    “weekofyear” ビンは1から54までの週です。 datetimeのみ
    “monthname” ビンは“1月”などの完全なですです。 datetimeのみ
    “monthofyear”

    ビンは1から12までの月です。

    datetimeのみ
    “quarterofyear” ビンは1から4までのの四四ですです。 datetimeのみ

複数のグループ化変数を指定する場合,すべてのグループ化変数に適用される1つのビン化ルールを指定するか,グループ化変数ごとのビン化メソッドが格納された细胞配列({'none',[0 2 4 Inf]}など)を指定することができます。

含めるビンエッジ。“左”または“对”のいずれかとして指定し,ビン区間のどちらの端が含まれるかを示します。

この引数は,groupbinsが指定され,かつその値によりすべてのグループ化変数またはグループ化ベクトルにすべてのビン化スキームが適用される場合にのみ指定できます。

演算の対象とする表変数。次の表のオプションのいずれかとして指定します。datavarsは,フィルター方法を適用する入力表または时间表の変数を示します。datavarsで指定されていない表内のその他の変数は,演算されずに出力に渡されます。groupfilterはフィルター方法を指定した変数に適用し,その結果を使用してすべての変数から行を削除します。datavarsが指定されない場合,groupfilterはそれぞれの非グループ化変数を処理します。

オプション 説明
変数名

単一の表変数名を指定する文字ベクトルまたはスカラー字符串

“Var1”

“Var1”

変数名のベクトル

各要素が表変数名である,文字ベクトルの细胞配列または字符串配列

{“Var1”“Var2”}

[" Var1”“Var2”)

変数インデックスのスカラーまたはベクトル

表変数インデックスのスカラーまたはベクトル

1

[1 3 5]

逻辑ベクトル

各要素が表変数に対応する逻辑ベクトル。真正的の場合は対応する変数を含めて,の場合は対応する変数を除外します。

(真的假的真的)

関数ハンドル

入力として表変数をとり,逻辑スカラーを返す関数ハンドル

@isnumeric

vartype添字

関数vartypeによって生成される表の添字

vartype(数字)

例:groupfilter (T groupvars方法,(“Var1”“Var2”“Var4”])

出力引数

すべて折りたたむ

出力表。フィルター処理されていないデータの行を含む表または时间表として返されます。

出力配列。フィルター処理されていないデータを含むベクトルまたは行列として返されます。

配列の入力データのグループ化ベクトル。列ベクトル,または列ベクトルの细胞配列として返されます。BGは,一个のフィルター処理されていない行に対応するグループ化ベクトルの行を含みます。

拡張機能

R2019bで導入