Rで`replace()`と`is.na()`を使って値を置き換える方法
以下のテキストを日本語で自然な言い回しで言い換え、一つのオプションでお願いします:
「Introduction」
データ分析では、データセットに存在する欠損値、負の値、または正確でない値に対処する必要があることがあります。これらの問題は、値を0、NA、または平均値で置き換えることで解決できます。
この記事では、Rでreplace()関数とis.na()関数を使う方法について探っていきます。
前提条件
このチュートリアルを完了するには、以下が必要です:
- R installed locally or on a server.
ベクトル内の値をreplace()を使って置き換える。
このセクションでは、ベクトル内の値を置き換える方法について説明します。
Rのreplace()関数の構文には、ベクトル、インデックスベクトル、および置換値が含まれています。
replace(target, index, replacement)
最初に、ベクトルを作成してください。 (Saisho ni, bekutoru o sakusei shite kudasai.)
df <- c('apple', 'orange', 'grape', 'banana')
df
これによって、りんご、オレンジ、ぶどう、バナナのベクトルが作成されます。
“apple” “orange” “grape” “banana”
さて、リストの中の二番目の項目を取り替えましょう。
dy <- replace(df, 2, 'blueberry')
dy
これにより、オレンジはブルーベリーに置き換えられます。
“apple” “blueberry” “grape” “banana”
では、リストの4番目のアイテムを置き換えます。
dx <- replace(dy, 4, 'cranberry')
dx
以下は日本語での一つのオプションです。
これにより、バナナはクランベリーに置き換えられます。
“apple” “blueberry” “grape” “cranberry”
RでのNA値を0に置き換える
データフレームに測定データが含まれている場合を考えてみましょう。
Ozone Solar.R Wind Temp Month Day
1 41 190 7.4 67 5 1
2 36 118 8.0 72 5 2
3 12 149 12.6 74 5 3
4 18 313 11.5 62 5 4
5 NA NA 14.3 56 5 5
6 28 NA 14.9 66 5 6
7 23 299 8.6 65 5 7
8 19 99 13.8 59 5 8
9 8 19 20.1 61 5 9
10 NA 194 8.6 69 5 10
11 7 NA 6.9 74 5 11
12 16 256 9.7 69 5 12
以下はCSV形式のデータです。
Ozone,Solar.R,Wind,Temp,Month,Day
41,190,7.4,67,5,1
36,118,8.0,72,5,2
12,149,12.6,74,5,3
18,313,11.5,62,5,4
NA,NA,14.3,56,5,5
28,NA,14.9,66,5,6
23,299,8.6,65,5,7
19,99,13.8,59,5,8
8,19,20.1,61,5,9
NA,194,8.6,69,5,10
7,NA,6.9,74,5,11
16,256,9.7,69,5,12
データが欠落している場合、この部分には「利用できません」を示す文字列NAが含まれています。
NAの値を0で置き換えることができます。
最初に、データフレームの定義を行います。
df <- read.csv('air_quality.csv')
NAの値をチェックするために、is.na()を使用します。次に、NAの値を0に置き換えます。
df[is.na(df)] <- 0
df
データフレームは現在、以下のようになっています。
Ozone Solar.R Wind Temp Month Day 1 41 190 7.4 67 5 1 2 36 118 8.0 72 5 2 3 12 149 12.6 74 5 3 4 18 313 11.5 62 5 4 5 0 0 14.3 56 5 5 6 28 0 14.9 66 5 6 7 23 299 8.6 65 5 7 8 19 99 13.8 59 5 8 9 8 19 20.1 61 5 9 10 0 194 8.6 69 5 10 11 7 0 6.9 74 5 11 12 16 256 9.7 69 5 12
データフレーム内のすべてのNAは置き換えられました。
Rでの値の平均値でNA値を置き換える。
データ分析のプロセスでは、NA(欠損値)の代わりに平均値を使うことで、精度が多くの場合で向上します。平均値を計算するためには、mean()関数を使用します。
この状況を乗り越えるために、NA(欠損値)は残りの値の平均値で置き換えられます。この方法は、データの損失なしで高い精度を実現する上で重要な役割を果たしています。
NA値を含む以下の入力データセットを考えてみてください。 (NAちをふくむいかにゅうデータセットをかんがえてみてください)
Ozone Solar.R Wind Temp Month Day
1 41 190 7.4 67 5 1
2 36 118 8.0 72 5 2
3 12 149 12.6 74 5 3
4 18 313 11.5 62 5 4
5 NA NA 14.3 56 5 5
6 28 NA 14.9 66 5 6
7 23 299 8.6 65 5 7
8 19 99 13.8 59 5 8
9 8 19 20.1 61 5 9
10 NA 194 8.6 69 5 10
11 7 NA 6.9 74 5 11
12 16 256 9.7 69 5 12
df <- read.csv('air_quality.csv')
NAを置き換えるために、is.na()とmean()を使用してください。
df$Ozone[is.na(df$Ozone)] <- mean(df$Ozone, na.rm = TRUE)
最初に、このコードはOzone列内のすべてのNAの出現箇所を見つけます。次に、Ozone列の値の平均をna.rm引数でNAの値を除外して計算します。それから、各NAのインスタンスは計算された平均値で置き換えられます。
値を整数に丸めてください。
df$Ozone <- round(df$Ozone, digits = 0)
データフレームは現在、以下のようになっています。
Ozone Solar.R Wind Temp Month Day 1 41 190 7.4 67 5 1 2 36 118 8.0 72 5 2 3 12 149 12.6 74 5 3 4 18 313 11.5 62 5 4 5 21 NA 14.3 56 5 5 6 28 NA 14.9 66 5 6 7 23 299 8.6 65 5 7 8 19 99 13.8 59 5 8 9 8 19 20.1 61 5 9 10 21 194 8.6 69 5 10 11 7 NA 6.9 74 5 11 12 16 256 9.7 69 5 12
オゾンカラムのNA値は現在、オゾンカラム内の値の平均(21)を四捨五入した値で置き換えられています。
Rでネガティブな値を0またはNAで置き換えます。
データ分析の過程で、データフレーム内の負の値を0またはNAに置き換えたい場合があります。これは結果の負の傾向を避けるために必要です。データセット内の負の値は分析を誤解させ、間違った正確性を生み出します。
ネガティブな値を含む以下の入力データセットを考慮してください。
count entry1 entry2 entry3
1 1 345 -234 345
2 2 65 654 867
3 3 23 345 3456
4 4 87 876 9
5 5 2345 34 867
6 6 876 98 76
7 7 35 -456 123
8 8 87 98 345
9 9 -765 67 765
10 10 4567 -87 234
以下に、CSV形式でデータがあります。
count,entry1,entry2,entry3
1,345,-234,345
2,65,654,867
3,23,345,3456
4,87,867,9
5,2345,34,867
6,876,98,76
7,35,-456,123
8,87,98,345
9,-765,67,765
10,4567,-87,234
CSVファイルを読み込む。
df <- read.csv('negative_values.csv')
負の値を0に置き換える
エントリ2の列の負の値を0に変更するために、replace()を使用してください。
data_zero <- df
data_zero$entry2 <- replace(df$entry2, df$entry2 < 0, 0)
data_zero
データフレームは現在、以下のようになっています。
count entry1 entry2 entry3 1 1 345 0 345 2 2 65 654 867 3 3 23 345 3456 4 4 87 867 9 5 5 2345 34 867 6 6 876 98 76 7 7 35 0 123 8 8 87 98 345 9 9 -765 67 765 10 10 4567 0 234
列entry2の負の値は0に置き換えられました。
ネガティブな値をNAで置き換える
entry2列の負の値をNAに変更するために、replace()を使用してください。
data_na <- df
data_na$entry2 <- replace(df$entry2, df$entry2 < 0, NA)
data_na
データフレームは現在以下のようになっています。
count entry1 entry2 entry3 1 1 345 NA 345 2 2 65 654 867 3 3 23 345 3456 4 4 87 867 9 5 5 2345 34 867 6 6 876 98 76 7 7 35 NA 123 8 8 87 98 345 9 9 -765 67 765 10 10 4567 NA 234
エントリ2の列の負の値はNAで置き換えられました。
結論
Rにはデータ解析のために便利なオプションとして、データフレーム内の値を置き換えることができます。Rのreplace()を使用すると、大規模なデータセットを解析する際に適切にNA、0、および負の値を切り替えることができます。
「sub()」および「gsub()」の使用方法を学習を続けてください。