HOWTO · R

Rの1列にNAがある行を削除する

このチュートリアルでは、R のデータフレームから 1つの列に NA を持つ行を削除する方法を示します。

このページの内容

データ フレームの列には、キーワード NA で表される空の値を含めることができます。 このチュートリアルでは、R の 1つの列に NA 値を含む行を削除する方法を示します。

R の is.na() メソッドを使用して、1つの列に NA を含む行を削除する

メソッド is.na() は、データ フレーム内の NA 値を探し、NA 値の行を削除します。 プロセスを以下に示します。

  1. まず、データフレームを作成します。
  2. 削除する NA 値と行に基づいて列を選択します。
  3. パラメータ dataframe$columnname をバイパスするメソッド is.na() で否定を作成します。
  4. メソッドは、指定された列にNA値が含まれているかどうかを確認して、行を削除します。

上記の手順に従って、例を試してみましょう。

例:

Delftstack = data.frame(Name=c('Jack', 'John', 'Mike', 'Michelle', 'Jhonny'),
                  LastName=c('Danials', 'Cena', 'Chandler', 'McCool', 'Nitro'),
                  Id=c(101, 102, NA, 104, NA),
                  Designation=c('CEO', 'Project Manager', 'Senior Dev', 'Junior Dev', 'Intern'))

print('The dataframe before removing the rows:-')
print(Delftstack)

print('The dataframe after removing the rows:-')
Delftstack[!is.na(Delftstack$Id),]

上記のコードは、Id 列の NA 値に基づいて行を削除します。

出力:

[1] "The dataframe before removing the rows:-"
      Name LastName  Id     Designation
1     Jack  Danials 101             CEO
2     John     Cena 102 Project Manager
3     Mike Chandler  NA      Senior Dev
4 Michelle   McCool 104      Junior Dev
5   Jhonny    Nitro  NA          Intern

[1] "The dataframe after removing the rows:-"
      Name LastName  Id     Designation
1     Jack  Danials 101             CEO
2     John     Cena 102 Project Manager
4 Michelle   McCool 104      Junior Dev

R で complete.cases() メソッドを使用して、1つの列に NA を含む行を削除する

メソッド complete.cases()is.na() メソッドと同様に機能します。 complete.cases メソッドは、データ フレーム内の NA 値を探し、この値を含む行を削除します。

プロセスは上記の手順と似ていますが、complete.cases() で否定を使用しないことだけが異なります。

例:

Delftstack = data.frame(Name=c('Jack', 'John', 'Mike', 'Michelle', 'Jhonny'),
                  LastName=c('Danials', 'Cena', 'Chandler', 'McCool', 'Nitro'),
                  Id=c(101, 102, NA, 104, NA),
                  Designation=c('CEO', 'Project Manager', 'Senior Dev', 'Junior Dev', 'Intern'))

print('The dataframe before removing the rows:-')
print(Delftstack)


print('The dataframe after removing the rows:-')
Delftstack[complete.cases(Delftstack$Id),]

上記のコードは、Id 列の NA 値に基づいて行を削除します。

出力:

[1] "The dataframe before removing the rows:-"
      Name LastName  Id     Designation
1     Jack  Danials 101             CEO
2     John     Cena 102 Project Manager
3     Mike Chandler  NA      Senior Dev
4 Michelle   McCool 104      Junior Dev
5   Jhonny    Nitro  NA          Intern

[1] "The dataframe after removing the rows:-"
      Name LastName  Id     Designation
1     Jack  Danials 101             CEO
2     John     Cena 102 Project Manager
4 Michelle   McCool 104      Junior Dev

RのTidyrライブラリdrop_na()メソッドを使用して、1列にNAを含む行を削除する

tidyr ライブラリの drop_na() は、NA 値列に基づいて行を削除します。 最初に、まだインストールされていない場合は、tidyr ライブラリをインストールする必要があります。

次のコードを実行して、パッケージをインストールします。

install.packages('tidyverse')

コード出力は上記の方法と似ていますが、プロセスは少し異なります。 dataframe %>% drop_na(column) 構文を使用して行を削除します。

例:

library(tidyr)
Delftstack = data.frame(Name=c('Jack', 'John', 'Mike', 'Michelle', 'Jhonny'),
                  LastName=c('Danials', 'Cena', 'Chandler', 'McCool', 'Nitro'),
                  Id=c(101, 102, NA, 104, NA),
                  Designation=c('CEO', 'Project Manager', 'Senior Dev', 'Junior Dev', 'Intern'))

print('The dataframe before removing the rows:-')
print(Delftstack)

print('The dataframe after removing the rows:-')
Delftstack %>% drop_na(Id)

上記のコードは、上記のメソッドと同様に機能します。

出力:

[1] "The dataframe before removing the rows:-"
      Name LastName  Id     Designation
1     Jack  Danials 101             CEO
2     John     Cena 102 Project Manager
3     Mike Chandler  NA      Senior Dev
4 Michelle   McCool 104      Junior Dev
5   Jhonny    Nitro  NA          Intern

[1] "The dataframe after removing the rows:-"
      Name LastName  Id     Designation
1     Jack  Danials 101             CEO
2     John     Cena 102 Project Manager
4 Michelle   McCool 104      Junior Dev

na.omit()filter() などのメソッドもあり、任意の列にある NA 値に基づいて行を削除するために使用されます。 1つの列ではなく、複数の列に基づいて値を削除します。