Tidy data

整然データ (せいぜんデータ、英: Tidy data) は、 次の4つの条件を満たした表型データのこと。 

 個々の変数が1つの列をなす 
 個々の観測が1つの行をなす 
 個々の観測の構成単位の類型が1つの表をなす 
 個々の値が1つのセルをなす 

構造と意味が合致するという特徴を持ち、R言語などを用いたデータ分析の際には非常に有用な概念である。 

 定義 
ハドリー・ウィッカムは、整然データの条件として以下の4つのことを挙げている。 

 個々の変数 (variable) が1つの列 (column) をなす。
 個々の観測 (observation) が1つの行 (row) をなす。
 個々の観測の構成単位の類型 (type of observational unit) が1つの表 (table) をなす。
個々の値 (value) が1つのセル (cell) をなす

前者3点は、ウィッカム氏が2014年に出した論文での議論で言及されている。4つ目の条件は、2014年の論文では明確に示されていないものの、ウィッカム氏が2017年に出したデータ分析の教科書 R for Data Science で整然データを扱った第12章に出てきている。

また、整然でないデータのことを雑然データ (messy data) と呼ぶ。

 具体例 
ある日の天気を調べたデータを考える。このデータにおいては、札幌・東京・福岡の3地点において、6時間おきに天気を記録している。このデータを2種類の形式で表したものを以下に掲げる。いずれも表している内容は全く同じであるが、形式だけが異なっている。つまり、意味は同じであるが、構造が違うのである。
+雑然データ地点6時12時18時札幌🌞🌞☁東京☁☂️☂️福岡☂️🌞🌞
+整然データ地点時刻天気札幌6時🌞札幌12時🌞札幌18時☁東京6時☁東京12時☂️東京18時☂️福岡6時☂️福岡12時🌞福岡18時🌞
ここで、1つ目に掲げたものは整然でない（すなわち雑然である）。これに対して2つ目に掲げたものは整然である。

 変数と列 
まずは両者において変数がどのように表示されているかを見てみたい。このデータにおいては、地点・時刻・天気という3つの変数がある。1つ目の表においては、地点の情報は列で表されているが、時刻の情報は行で表されている。天気の情報は複数の行と列にまたがっている。地点も時刻も天気も意味的には変数であるにもかかわらず、表出された構造が異なっている。そして、整然データの1つ目の条件（個々の変数が1つの列をなす）は満たされていない。

これに対して、2つ目の表ではどの変数も1つの列で表されている。地点の情報は縦一本になっているし、時刻の情報も縦一本になっている。天気も同様だ。つまり、こちらは1つの変数が必ず1つの列をなしており、整然データの1つ目の条件を満たしている。

 観測と行 
今度は1つの観測がどのように表されているかについて見てみよう。今見ているデータでは、9つの観測が行われている。

1つ目の表においては、1つの観測が単純な形をしていない。例えば、福岡で12時に晴れだったという観測に関する情報はばらばらになってしまっている。この観測を抽出するコードを書くことはさほど容易なことではない。

これに対して、2つ目の表においては、1つの観測が1つの行という単純な形で示されている。つまり、こちらは、整然データの2つ目の条件（個々の観測が1つの行をなす）を満たしているのである。

 類型と表 
整然データの3つ目の条件（個々の観測の構成単位の類型が1つの表をなす）は、端的に言えば2つのことを含意する。

1つ目は、1つの表には種類の違う観測が入っていてはならないということである。先ほどの天気の例で言えば、表の中に天気を観測したもののほかに、ラーメン店の日々の売り上げを観測したものが入っていてはいけない。もし入っていれば、整然ではなくなる。このように類型の異なるものが1つの表に入っていれば、データ分析がしづらいことはすぐに分かるだろう。

2つ目は、同じ種類の観測が複数の表にまたがっていてはならないということである。先ほどの天気の例で言えば、6時の観測と12時の観測が別々の表に記録されていれば、それは整然とはならない。すぐに想像が付くだろうが、同じ種類の観測は、普通ひとまとめにして分析することになるので、1つの表にまとまっていた方が分析しやすいのである。複数の表にまたがっていては、簡単に分析することはできない。

 値とセル 
最後に、整然データの4つ目の条件（個々の値が1つのセルをなす）についても簡単に触れておきたい。

もし、1つのセルに2つ以上の値が入っていれば、整然にはならない。例えば、札幌で6時も12時も晴れだったからといって、それをまとめて「6時＆12時」という形で2つの値を1つのセルに記しては、整然でなくなる。
+1つのセルに2つの値地点時刻天気札幌6時 & 12時🌞札幌18時☁
また、1つの値の情報が2つ以上のセルに分かれてしまっているという場合も、整然にはならない。こうした状況は想像しにくいかもしれないが、何らかの2桁のコードがあったときに、1桁目と2桁目が別々のセルに格納されてしまっている状況はこれに当てはまるだろう。

 意義 

 整然データ 
整然データには、1つの構造上の単位と1つの意味上の単位とが対応しているという特徴がある。例えば、整然データにおいては、1つの列という構造上の単位が、1つの変数というデータの意味上の単位に必ず対応する。構造と意味とが合致していると、分析は非常に容易になる。 

そもそも、我々がデータ分析を行う目的は、多くの場合、データにおける意味上の関係を見いだすことに帰結する。構造上の関係を見たいのではなく、意味上の関係を見たいのである。我々は、例えば、7列目が12列目にどう影響するかといった構造上の関係を知りたいのではなく、学歴が年収にどう影響するかといった意味上の関係を知りたいのである。

しかし、分析プログラムを書く場合は、19列目と38列目の差を求めさせるといった形で、構造上の単位をもって記述することが多くなる。つまり、本当は意味上の関係を知りたいのだが、計算機に対しては構造上の関係を分析させることになるのである。

ここで、構造と意味とが合致していなければ、人間が考えていることを計算機に理解させるための余計な翻訳をはさむ必要が出てくる。しかし、整然データのように、構造と意味が合致していれば、人間が考えた意味をほとんどそのまま計算機にわたす構造とすることができるのだ。

 雑然データ 
今まで、整然データの意義について述べてきた。このことは、整然でないデータ、すなわち雑然データにまったく意義がないことを示唆するものではない。整然でないデータも、状況によっては役に立つ。

先に挙げた天気の例では、人間が見るのであれば、整然でないものの方が分かりやすいだろう。例えば、同じ時刻の異なる地点の天気を比較したければ、先に挙げた整然でないものの方が比較しやすいはずだ。また、紙に印刷するのであれば、先に挙げた整然でないものの方が紙幅を節約できる。

 データマトリックスとの関係 
整然データが モデルマトリックスまたはデータマトリックスと呼ばれる一般的な統計形式を指す場合がある 。 データマトリックスは次のように定義されている。 データの多変量のセットを表示する標準的な方法は、データマトリックスである。データマトリックスでは、行が個々のサンプルに、列が変数に相当する。第 i 行、第 j 列の入力項目は、i 回目の計測・観察における j 番目の変数に合致する。