ウェブサイト検索

Tidyrを使用してRで欠損値を埋める、fill関数


欠損データまたは値は、変数にデータレコードが存在しない場合に発生します。これは、適切に対処しないとデータモデリングプロセスで深刻な問題を引き起こします。何よりも、多くのアルゴリズムは欠損データに対して快適ではありません。

Rで欠損データを扱う方法はいくつもあります。レコードを削除することもできますが、その際には情報を失っていることを念頭に置いておくべきであり、モデル作成において潜在的なメリットを失う可能性があります。一方で、データの平均値や中央値で欠損データを補完することもできます。この記事では、Tidyrパッケージを使用してRで欠損値を埋める方法を見ていきます。

Tidyrはデータを整えるための多くの関数を提供するRパッケージです。データの質が高いほど、モデルも良くなります!

1. Rにおける欠損データ

  • 欠損値は多くの形式で示される場合があります - NA、NAN などです。
  • それは変数内の欠落したレコードです。それは単一の値であるか、全体の行である可能性があります。
  • 数値データとカテゴリーデータの両方に欠損値が発生する可能性があります。
  • Rは欠損データに対処するための多くの方法を提供しています。
  • tidyrパッケージは、トップダウンまたはボトムアップアプローチを使用して、欠損データを埋めるのに役立ちます。

2. RのTidyrパッケージ

  • RのTidyrパッケージは、Rで生データをクリーンアップするために使用されます。
  • これは、クリーニング、整理、欠損値の補填などの機能を提供します。
  • 私たちはRのパイプを使ってtidyrを利用します。

RでTidyrパッケージをインストールするには、以下のコードをRで実行してください。

#Install tidyr package

install.packages('tidyr')


#Load the library

library(tidyr)

package ‘tidyr’ successfully unpacked and MD5 sums checked

上記のように、tidyrのロードが成功した後に確認メッセージが表示されます。

3. データフレームを作成する

はい、私たちは欠損値を持つシンプルなサンプルデータフレームを作成する必要があります。これは、tidyrのfill関数を使用して欠損データを埋めるのに役立ちます。

#Create a dataframe

a <- c('A','B','C','D','E','F','G','H','I','J')
b <- c('Roger','Carlo','Durn','Jessy','Mounica','Rack','Rony','Saly','Kelly','Joseph')
c <- c(86,NA,NA,NA,88,NA,NA,86,NA,NA)

df <- data.frame(a,b,c)
df
   a       b  c
1  A   Roger 86
2  B   Carlo NA
3  C    Durn NA
4  D   Jessy NA
5  E Mounica 88
6  F    Rack NA
7  G    Rony NA
8  H    Saly 86
9  I   Kelly NA
10 J  Joseph NA

さて、データフレームはありますが、たくさんの欠損値があります。したがって、データに欠損値が多い場合には、Rのfill関数を使用して、欠損データの代わりに対応する値や隣接する値を埋めることができます。

4. 二つの異なるアプローチ

はい、先ほど言ったようにデータを入力できます。このプロセスには2つのアプローチが含まれます -

  • 上に - 欠損値を埋める際には、値を埋める方向を指定する必要があります。上を選択すると、埋めるプロセスは下から上になります。
  • ダウン - この方法では、塗りつぶしの方向を下に設定する必要があります。

わからなかったのですか?

心配しないでください。同じことを説明するためにいくつかの例を通じて進んでいきますので、物事がどのように機能するかを理解できるようになります。

5. 欠損値の補填 - 'アップ'

このプロセスでは、3つの列と10のデータレコードを持つデータフレームがあります。欠損データを処理するためにfill関数を使用する前に、いくつかのことを確認する必要があります -

データが収集されるとき、人々は同じであったため、いくつかの値の代表として1つの値を入力することがあります。

例: 年齢を集計する際に、25歳の人が10人いる場合、最後の人に対して25歳と記載することで、10人全員の年齢が25歳であることを示すことができます。

これはあなたが直面する最も一般的な状況ではないことに注意してください。しかし、これはあなたがこのような状況にいるとき、フィル機能を使用して対処できるようにするための意図です。

#Dataframe

   a       b  c
1  A   Roger 86
2  B   Carlo NA
3  C    Durn NA
4  D   Jessy NA
5  E Mounica 88
6  F    Rack NA
7  G    Rony NA
8  H    Saly 86
9  I   Kelly NA
10 J  Joseph NA


#Creste new dataframe by filling missing values (Up)
df1 <- df %>% fill(c, .direction = 'up')
df1
   a       b  c
1  A   Roger 86
2  B   Carlo 88
3  C    Durn 88
4  D   Jessy 88
5  E Mounica 88
6  F    Rack 86
7  G    Rony 86
8  H    Saly 86
9  I   Kelly NA
10 J  Joseph NA

ご覧のとおり、fill関数は欠損値をUP方向(ボトム - アップ)で埋めました。

  • 最後の行に2つのNA値があることがわかります。これは、fill関数が最初にNA値に遭遇し、次のNA値まで上方向に埋めるためです。

6. 欠損値の填補 - 'ダウン'

さて、ここではデータの欠損値を埋めるために「ダウン」メソッドを使用します。自分が何をしているのか、そしてその結果がどうなるのかを理解するために、前のセクションで述べた仮定を常に確認してください。

#Data


   a       b  c
1  A   Roger 86
2  B   Carlo NA
3  C    Durn NA
4  D   Jessy NA
5  E Mounica 88
6  F    Rack NA
7  G    Rony NA
8  H    Saly 86
9  I   Kelly NA
10 J  Joseph NA


#Creates new dataframe by filling missing values (Down) - (Top-Down approach)

df1 <- df %>% fill(c, .direction = 'down')
df1
   a       b  c
1  A   Roger 86
2  B   Carlo 86
3  C    Durn 86
4  D   Jessy 86
5  E Mounica 88
6  F    Rack 88
7  G    Rony 88
8  H    Saly 86
9  I   Kelly 86
10 J  Joseph 86
  • ここでは、欠損値はありません。これは、fill関数が最初に有効なデータ値である86に出会うからです。それは、次のNA領域に86を埋めるまで、有効なデータレコードを見つけるまで続きます。

7. まとめ

Rで欠損値を埋めることは、null値を含むデータを分析する際に最も重要なプロセスです。最初は少し難しく感じるかもしれませんが、この記事を一度か二度読んで、簡潔に理解するようにしてください。消化するのが難しいケーキではありません!

この方法があなたの今後の課題に役立つことを願っています。それでは、今はこれで終わりです。ハッピーR!!! :)

さらに読む: Rのfill関数

関連記事: