メインコンテンツ

rmmissing

欠損エントリを削除

説明

R = rmmissing(A) は、欠損エントリを配列または table から削除します。A がベクトルの場合、rmmissing は欠損データを含むすべてのエントリを削除します。A が行列または table の場合、rmmissing は欠損データを含むすべての行を削除します。

欠損値は、A のデータ型にしたがって定義されます。

  • NaNdoublesingleduration および calendarDuration

  • NaTdatetime

  • <missing>string

  • <undefined>categorical

  • {''} — 文字ベクトルの cell

A が table の場合、各変数のデータ型がその変数の欠損値を定義します。

rmmissing の機能を対話的に使用するには、ライブ スクリプトに [外れ値データの削除] タスクを追加します。

R = rmmissing(A,dim) は、動作する対象の A の次元を指定します。既定では、rmmissing はサイズが 1 に等しくない最初の次元に沿って動作します。

R = rmmissing(___,Name=Value) は、1 つ以上の名前と値の引数を使用して、欠損エントリを削除するための追加のパラメーターを指定します。たとえば、rmmissing(A,MinNumMissing=n) を使用して、少なくとも n 個の欠損値を含む A の行を削除できます。

[R,TF] = rmmissing(___) は、A の削除された行または列に対応する logical ベクトルも返します。

すべて折りたたむ

欠損エントリを含むベクトルを作成し、各欠損エントリを削除します。

A = [1 3 NaN 6 NaN];
R = rmmissing(A)
R = 1×3

     1     3     6

複数のデータ型をもつ table から不完全な行を削除します。

まず、categoricaldouble および string のデータ型を含む複数の変数をもつ table を作成します。

A = table([missing; "Jones"; "Lopez"],[45; 32; NaN],categorical([missing; "CA"; "MA"]),[6051; 7234; NaN], ...
    VariableNames=["Name" "Age" "State" "ID"])
A=3×4 table
      Name       Age       State        ID 
    _________    ___    ___________    ____

    <missing>     45    <undefined>    6051
    "Jones"       32    CA             7234
    "Lopez"      NaN    MA              NaN

table から欠損データを含むすべての行を削除します。

R = rmmissing(A)
R=1×4 table
     Name      Age    State     ID 
    _______    ___    _____    ____

    "Jones"    32      CA      7234

table 変数 Age または ID から欠損値がある行だけを削除します。

R2 = rmmissing(A,DataVariables=["Age" "ID"])
R2=2×4 table
      Name       Age       State        ID 
    _________    ___    ___________    ____

    <missing>    45     <undefined>    6051
    "Jones"      32     CA             7234

あるいは、関数 isnumeric を使用して、動作対象の数値変数を識別します。

R3 = rmmissing(A,DataVariables=@isnumeric)
R3=2×4 table
      Name       Age       State        ID 
    _________    ___    ___________    ____

    <missing>    45     <undefined>    6051
    "Jones"      32     CA             7234

欠損データをもつ行列を作成し、2 つ以上の欠損値がある列 (2 番目の次元) をすべて削除します。新しい行列と、A の削除された列を示す logical 行ベクトルを返します。

A = [NaN NaN 5 3 NaN 5 7 NaN 9 2;
     8 9 NaN 1 4 5 6 5 NaN 5;
     NaN 4 9 8 7 2 4 1 NaN 3]
A = 3×10

   NaN   NaN     5     3   NaN     5     7   NaN     9     2
     8     9   NaN     1     4     5     6     5   NaN     5
   NaN     4     9     8     7     2     4     1   NaN     3

[R,TF] = rmmissing(A,2,MinNumMissing=2)
R = 3×8

   NaN     5     3   NaN     5     7   NaN     2
     9   NaN     1     4     5     6     5     5
     4     9     8     7     2     4     1     3

TF = 1×10 logical array

   1   0   0   0   0   0   0   0   1   0

table を作成し、-99 として定義されている欠損エントリを削除します。削除する欠損エントリの位置を示す logical 変数 loc の table を作成します。

A = [1; 4; 9; -99; 3];
B = [9; 0; 6; 2; 1];
C = [-99; 4; 2; 3; 8];
T = table(A,B,C)
T=5×3 table
     A     B     C 
    ___    _    ___

      1    9    -99
      4    0      4
      9    6      2
    -99    2      3
      3    1      8

loc = T==-99
loc=5×3 table
      A        B        C  
    _____    _____    _____

    false    false    true 
    false    false    false
    false    false    false
    true     false    false
    false    false    false

次に、rmmissing で名前と値の引数 MissingLocations を使用して、既知の欠損エントリの位置を指定します。欠損エントリが削除されたデータに加えて、削除された行を示す logical ベクトルを返します。

[R,TF] = rmmissing(T,MissingLocations=loc)
R=3×3 table
    A    B    C
    _    _    _

    4    0    4
    9    6    2
    3    1    8

TF = 5×1 logical array

   1
   0
   0
   1
   0

一部の行時間が欠損している timetable を作成します。次に、rmmissing が timetable データ変数に対して演算を行わないように指定して、タイムスタンプが欠損している行を削除します。

T=timetable(hours([1 NaN 2 3 NaN 4])',[1 NaN NaN 2 5 1]')
T=6×1 timetable
     Time     Var1
    ______    ____

    1 hr        1 
    NaN hr    NaN 
    2 hr      NaN 
    3 hr        2 
    NaN hr      5 
    4 hr        1 

R = rmmissing(T,DataVariables={})
R=4×1 timetable
    Time    Var1
    ____    ____

    1 hr      1 
    2 hr    NaN 
    3 hr      2 
    4 hr      1 

入力引数

すべて折りたたむ

入力データ。ベクトル、行列、文字ベクトルの cell 配列、または数値変数をもつ table か timetable として指定します。

  • Atimetable の場合、rmmissing(A)A の欠損データを含む行をすべて削除し、対応する時間ベクトル要素も削除します。時間ベクトルに NaT または NaN が含まれる場合、rmmissing(A) はそれを時間ベクトルから削除し、A の対応する行も削除します。

  • A が cell 配列、または cell 配列変数をもつ table の場合、ismissing は cell 配列が文字ベクトルを含む場合のみ欠損要素を検出します。

データ型: single | double | char | string | table | timetable | cell | categorical | datetime | duration | calendarDuration

演算の対象の配列次元。1 または 2 を指定します。次元を指定しない場合、既定値はサイズが 1 でない最初の配列次元です。

mn 列の入力行列配列 A を考えます。

  • rmmissing(A,1) は、欠損データを含んでいる A の行を削除。

    rmmissing(A,1) row removal

  • rmmissing(A,2) は、欠損データを含んでいる A の列を削除。

    rmmissing(A,2) column removal

入力データが table または timetable の場合、dim はサポートされず、演算は各 table 変数または timetable 変数に沿って個別に行われます。

名前と値の引数

すべて折りたたむ

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

例: rmmissing(A,DataVariables=["Temperature" "Altitude"]) は、A の行のうち Temperature または Altitude 変数に欠損データが含まれるものを削除します。

行または列を削除するために必要な欠損エントリの最小数。非負の整数スカラーとして指定します。既定値は 1 です。行または列内の欠損エントリの数が MinNumMissing の値より小さい場合、rmmissing はその行または列を削除せずに欠損値を保持します。

例: rmmissing(A,MinNumMissing=6)

R2024b 以降

既知の欠損エントリ インジケーター。logical ベクトル、行列、あるいは logical 変数を含む table または timetable として指定します。値が 1 (true) の要素は、A の欠損エントリの位置を示します。値が 0 (false) の要素は、非欠損エントリを示します。

MissingLocations を指定した場合、rmmissing は標準の欠損値を使用しません。代わりに、既知の欠損エントリ インジケーターの要素を使用して、欠損エントリを定義します。

MissingLocations がベクトルまたは行列の場合、A と同じサイズでなければなりません。MissingLocations が table または timetable の場合は、演算対象の入力 table 変数と同じサイズと名前をもつ logical 変数を含めなければなりません。

データ型: logical | table | timetable

演算の対象とする table 変数。次の表のオプションのいずれかとして指定します。DataVariables の値は、入力 table 内の欠損値を調べる変数を示します。

DataVariables で指定されていない table 内の他の変数は、欠損値を調べずに出力に渡されます。

インデックス方式指定する値

変数名

  • string スカラーまたは文字ベクトル

  • string 配列または文字ベクトルの cell 配列

  • pattern オブジェクト

  • "A" または 'A'A という名前の変数

  • ["A" "B"] または {'A','B'}A および B という名前の 2 つの変数

  • "Var"+digitsPattern(1)"Var" の後に数字 1 桁が続く名前の変数

変数インデックス

  • table 内の変数の位置を参照するインデックス番号

  • 数値のベクトル

  • logical ベクトル。通常、このベクトルの長さは変数の数と同じですが、末尾の 0 (false) 値は省略できます。

  • 3 — table の 3 番目の変数

  • [2 3] — table の 2 番目と 3 番目の変数

  • [false false true] — 3 番目の変数

関数ハンドル

  • 入力として table 変数を取り、logical スカラーを返す関数ハンドル

  • @isnumeric — 数値を含んでいるすべての変数

変数の型

  • 指定した型の変数を選択する vartype 添字

  • vartype("numeric") — 数値を含んでいるすべての変数

例: rmmissing(T,DataVariables=["Var1" "Var2" "Var4"])

出力引数

すべて折りたたむ

欠損エントリが削除されたデータ。ベクトル、行列、文字ベクトルの cell 配列、table または timetable として返されます。R のサイズは削除された行または列の数に依存します。

削除されたエントリのインジケーター。ベクトルとして返されます。値 1 (true) は A の削除された行または列に対応します。値 0 (false) は変更されていない行または列に対応します。TF の向きとサイズは、A および動作対象の次元に依存します。

データ型: logical

ヒント

  • 入力データが構造体配列、または文字ベクトル以外の cell 配列である場合、rmmissing はいずれのエントリも削除しません。構造体配列から欠損エントリを削除するには、関数 structfun を使用して、構造体の各フィールドに rmmissing を適用します。文字ベクトル以外の cell 配列から欠損エントリを削除するには、関数 cellfun を使用して、cell 配列の各 cell に rmmissing を適用します。

代替機能

ライブ エディター タスク

rmmissing の機能を対話的に使用するには、ライブ スクリプトに [欠損データの削除] タスクを追加します。

Clean Missing Data task in the Live Editor

拡張機能

すべて展開する

バージョン履歴

R2016b で導入

すべて展開する