R で nan 値を処理する方法 (例付き)
R では、 NaN はNot a Number を表します。
通常、NaN 値は、無効な結果が得られる計算を実行しようとしたときに発生します。
たとえば、ゼロで除算するか、負の数の対数を計算すると、どちらも NaN 値が生成されます。
#attempt to divide by zero 0 / 0 [1]NaN #attempt to calculate log of negative value log(-12) [1]NaN
NaN 値は、単に欠損値を表すNA値とは異なることに注意してください。
R で NaN 値を処理するには、次のメソッドを使用できます。
#identify positions in vector with NaN values which(is. nan (x)) #count total NaN values in vector sum(is. nan (x)) #remove NaN values in vector x_new <- x[!is. no (x)] #replace NaN values in vector x[is. nan (x)] <- 0
次の例は、これらの各メソッドを実際に使用する方法を示しています。
例 1: NaN 値を含むベクトル内の位置を特定する
次のコードは、NaN 値を含むベクトル内の位置を識別する方法を示しています。
#create vector with some NaN values
x <- c(1, NaN, 12, NaN, 50, 30)
#identify positions with NaN values
which(is. nan (x))
[1] 2 4
結果から、ベクトル内の位置2と位置 4の要素が NaN 値であることがわかります。
例 2: ベクトル内の合計 NaN 値をカウントする
次のコードは、R のベクトル内の NaN 値の合計数をカウントする方法を示しています。
#create vector with some NaN values
x <- c(1, NaN, 12, NaN, 50, 30)
#identify positions with NaN values
sum(is. nan (x))
[1] 2
結果から、ベクトル内に合計2 つのNaN 値があることがわかります。
例 3: ベクトル内の NaN 値を削除する
次のコードは、元のベクトルから NaN 値が削除された新しいベクトルを作成する方法を示しています。
#create vector with some NaN values
x <- c(1, NaN, 12, NaN, 50, 30)
#define new vector with NaN values removed
x_new <- x[!is. no (x)]
#view new vector
x_new
[1] 1 12 50 30
2 つの NaN 値がベクトルから削除されていることに注意してください。
例 4: ベクトル内の NaN 値を置換する
次のコードは、ベクトル内の NaN 値をゼロに置き換える方法を示しています。
#create vector with some NaN values
x <- c(1, NaN, 12, NaN, 50, 30)
#replace NaN values with zero
x[is. nan (x)] <- 0
#view updated vector
x
[1] 1 0 12 0 50 30
ベクトルでは両方の NaN 値がゼロに置き換えられていることに注意してください。
追加リソース
次のチュートリアルでは、R で他の一般的なタスクを実行する方法について説明します。