統計・R

【STEP1-4】Rでデータを列や行を確認するのに便利な関数!

大分、Rにも慣れてきたかな?この記事ではデータフレーム(表のことだよ~!)の中身を確認する方法をいくつか紹介するね!そもそもデータフレームってなに?って思った人はこの記事で簡単に説明をしているので、さっと見返しておくといいよ!

参考記事

no image
【STEP1-3】データの型と構造ってなに?

この記事はRを初めて使う人向けに、データ型、データ構造について紹介をしています。データ型は数字(numeric)、文字列(character)などがあります。データ構造はデータフレーム、行列、リストなどがあり、オブジェクトの全体構造が分かるようになります。

続きを見る

データフレームの中身は何回も繰り返しチェックしながらプログラミングを行うので、この作業はいずれ慣れていくと思うけれど、最初はどうするんだっけ?と戸惑うことも多いはず!なので、ここのページにまとめてあるということを頭に入れておくと便利だよ!

じゃあ、さっそく説明に入ろう!

この記事のPoint!

  • データフレーム全体を確認する方法には、オブジェクトをそのまま出力する、View関数(Global Environment使用を含む)、tibble関数などがある。
  • オブジェクトに含まれるデータの数はlength関数。データフレームの行数はnrow関数、列数はncol関数などがある。
  • rownames関数、colnames関数で行名、列名を確認したり、変更したりすることができる。

Rでデータフレームの中身を全部チェックしたいっていうときの方法

オブジェクト名をそのままRUNする!

まずは、細かい場所なんか関係なく、データフレーム全体を確認する方法から紹介するよ!一番簡単なのは、オブジェクト名をそのままRUN(Ctrl + Enter)で出力すること!これは、今までの記事を読んでいた人は、説明の中で普通に行っていたので、分かると思うよ。

たとえば、RのサンプルデータのうちBODというデータを出力すると下記のようになる。

BOD
  Time demand
1    1    8.3
2    2   10.3
3    3   19.0
4    4   16.0
5    5   15.6
6    7   19.8

これは簡単でしょ!とってもわかりやすいね。ただ、今回、出力しているBODという表は6行2列のコンパクトな表だからこのまま出力しても全体が見えるけれど、データが大きいと数百行になったり、数百列になったりして、そのまま出力しても全体が見えづらいんだ。だから、そのまま出力することは意外と少ないかな~って感じ。

オブジェクト名でそのまま中身を確認するのは、小さいデータフレームのときがおすすめだね!

View関数やGlobal Environmentから確認する

オブジェクト名をそのまま出力するよりも、全体が分かりやすく表示されるのが、View関数やGlobal Environmentから確認する方法。この二つは同じことをしているんだけど、操作が違うので一応両方とも説明しておくね。

ここでも、サンプルデータのBODを使って説明しよう!まずは、View関数を使ってみよう!(View関数は ”V” が大文字だから気を付けてね!ぱっと見では大文字と小文字の区別がつきにくいからね・・・)

Veiw(BOD)

すると、下記の画像のように、画面左上のスクリプトが表示されていた場所にBODというタブができて、そこに表の中身が表示されるよ!データフレームの中身を確認するときに、僕が一番使うのがこの方法かな。

左上にデータフレームの表を表示した画面

このView関数はコードとして入力してもいいんだけど、右上にあるGlobal Environment画面の右端に表のアイコンがあるでしょ?ここを選択して、View関数を呼び出すことができるから便利だよ!ぼくはこっちのGlobal Environment画面から呼び出すことが多いかな?

tibble関数を使う

もう一つ、だんだんとおなじみにはなってきた(なって欲しい)、tibble関数でも表の中身を確認することができるよ。tibble関数はデータ構造もデータの型も確認できるうえに、データの中身も最初の10行を見ることができて超便利!どんどん使って、馴れていこう!tibble関数はdplyrパッケージに含まれている関数だから、パッケージを読み込んでから使おう!dplyrパッケージを読み込んでもOKだけど、tidyverseというメタパッケージにdplyrも含まれているので、こっちを読み込むのがおすすめだよ!

install.packages("tidyverse")
library(tidyverse)
tibble(iris)
# A tibble: 150 x 5
   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
          <dbl>       <dbl>        <dbl>       <dbl> <fct> 
  1          5.1         3.5          1.4         0.2 setosa
  2          4.9         3            1.4         0.2 setosa
  3          4.7         3.2          1.3         0.2 setosa
  4          4.6         3.1          1.5         0.2 setosa
  5          5           3.6          1.4         0.2 setosa
  6          5.4         3.9          1.7         0.4 setosa
  7          4.6         3.4          1.4         0.3 setosa
  8          5           3.4          1.5         0.2 setosa
  9          4.4         2.9          1.4         0.2 setosa
 10          4.9         3.1          1.5         0.1 setosa
 # ... with 140 more rows

tibble関数を使うと最初の10行しか表示されないけれど、一番上に150行×5列ということが分かるように表示されているね!

Rで列や行、データの数や名前を確認する方法

length関数でデータの数や列の数を確認する

今度はオブジェクトに含まれるデータの数や名前を確認する方法を紹介していくよ。まずはデータの数を出力する関数であるlength関数だ。length(オブジェクト名)でオブジェクトに含まれるデータの数が出力されるよ。例えば下記が代表的な例だよ。

x <- c(1:5) # 1~5をxというオブジェクトに格納
length(x)
[1] 5

ここまでは簡単なんだけど、ちょっとだけ分かりにくいのが、データフレームでは列の数、リストでは格納されているデータのまとまりの数が出力されるんだ。(ちなみに、これは”$”マークで指定できる数になるよ。)

例をあげると、下記のようになる。a, bというデータフレームが格納されたリストのデータ数は2と出力されるということだ!list関数はリストを作成する関数だけど、よく分からないという人はこの記事を読むといいよ!

x <- list(a = iris, b = BOD)
length(x)
[1] 2

また、因数がデータフレームの場合には列数が出力されるよ!

length(iris)
[1] 5

データフレームの行数はnrow, 列数はncolで一発

つづいて、データフレームの行数、列数を確認したいときに使う関数はそれぞれnrow関数、ncol関数になるよ。これはカンタンだね!シンプルで使いやすいってのが重宝するポイントかな?

nrow(iris)
[1] 150
ncol(iris)
[1] 5

データフレームや行列の行名、列名はrownames, colnames

つぎは行名、列名を調べる方法を紹介するよ。行の名前を知りたい時にはrownames関数、列の名前をしりたい時にはcolnames関数。サンプルデータのirisを使うと下記のようになるよ。irisのデータは行名がついていないので行番号がそのまま行名になっているね。

rownames(iris)
  [1] "1"   "2"   "3"   "4"   "5"   "6"   "7"   "8"   "9"   "10"  "11"  "12"  "13"  "14"  "15"  "16"  "17"  "18"  
[19] "19"  "20"  "21"  "22"  "23"  "24"  "25"  "26"  "27"  "28"  "29"  "30"  "31"  "32"  "33"  "34"  "35"  "36"  
[37] "37"  "38"  "39"  "40"  "41"  "42"  "43"  "44"  "45"  "46"  "47"  "48"  "49"  "50"  "51"  "52"  "53"  "54"  
[55] "55"  "56"  "57"  "58"  "59"  "60"  "61"  "62"  "63"  "64"  "65"  "66"  "67"  "68"  "69"  "70"  "71"  "72"  
[73] "73"  "74"  "75"  "76"  "77"  "78"  "79"  "80"  "81"  "82"  "83"  "84"  "85"  "86"  "87"  "88"  "89"  "90"  
[91] "91"  "92"  "93"  "94"  "95"  "96"  "97"  "98"  "99"  "100" "101" "102" "103" "104" "105" "106" "107" "108"
[109] "109" "110" "111" "112" "113" "114" "115" "116" "117" "118" "119" "120" "121" "122" "123" "124" "125" "126"
[127] "127" "128" "129" "130" "131" "132" "133" "134" "135" "136" "137" "138" "139" "140" "141" "142" "143" "144"
[145] "145" "146" "147" "148" "149" "150"
colnames(iris)
[1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width"  "Species"

rownames(), colnames()は行名、列名をつけるときにも使う

rownames関数、colnames関数は行名、列名を付けたり、変更する場合にも使う関数なので、確認するときに限らず、データをクリーニングするときにはよく使う関数だよ。せっかくなので一緒に使い方を紹介するね。どちらの関数もrownames(オブジェクト名) <- c(新しい行の名前) みたいな使い方をするんだ。行名、列名を確認するときの関数の使い方とちょっと違う感じが最初は気持ち悪いけれど、すごくよく使うと思うので頑張って慣れよう!

まずはrownames関数を使って、1~150だった列の名前を2~151に変更するよ!

rownames(iris) <- c(2:151) # 行の名前を2~151に変更
rownames(iris)
  [1] "2"   "3"   "4"   "5"   "6"   "7"   "8"   "9"   "10"  "11"  "12"  "13"  "14"  "15"  "16"  "17"  "18"  "19"  
[19] "20"  "21"  "22"  "23"  "24"  "25"  "26"  "27"  "28"  "29"  "30"  "31"  "32"  "33"  "34"  "35"  "36"  "37"  
[37] "38"  "39"  "40"  "41"  "42"  "43"  "44"  "45"  "46"  "47"  "48"  "49"  "50"  "51"  "52"  "53"  "54"  "55"  
[55] "56"  "57"  "58"  "59"  "60"  "61"  "62"  "63"  "64"  "65"  "66"  "67"  "68"  "69"  "70"  "71"  "72"  "73"  
[73] "74"  "75"  "76"  "77"  "78"  "79"  "80"  "81"  "82"  "83"  "84"  "85"  "86"  "87"  "88"  "89"  "90"  "91"  
[91] "92"  "93"  "94"  "95"  "96"  "97"  "98"  "99"  "100" "101" "102" "103" "104" "105" "106" "107" "108" "109"
[109] "110" "111" "112" "113" "114" "115" "116" "117" "118" "119" "120" "121" "122" "123" "124" "125" "126" "127"
[127] "128" "129" "130" "131" "132" "133" "134" "135" "136" "137" "138" "139" "140" "141" "142" "143" "144" "145"
[145] "146" "147" "148" "149" "150" "151"

tibble形式のデータでもrownames関数を使って行名を付けることはできるんだけど、tibbleの場合にはクリーニングの過程で行名が消えてしまったりするので非推奨みたいだよ。これは頭に入れておこう!

つぎは列名をつける場合の例を出してみるよ。(もとの列名は "Sepal.Length", "Sepal.Width",  "Petal.Length", "Petal.Width",  "Species" だよ!)

colnames(iris) <- c("がく-長さ", "がく-幅", "花びら-長さ", "花びら-幅", "品種")
colnames(iris)
[1] "がく-長さ"   "がく-幅"     "花びら-長さ" "花びら-幅"   "品種"   

列名が日本語になったね!

また、一つの列だけ指定して変更したい場合には[行 or 列番号]を使って指定して変更ができるよ。colnames(iris[1]) ではなく、colnames(iris)[1] という感じで指定するので間違いないでね!(ぼくは最初これをよく間違えたんだ!)また、c( ) を使って複数の行や列名も変更できるよ。

rownames(iris)[1] <- "第一行" # 1行目の行の名前を変更
colnames(iris)[1] <- "がくの長さ(mm)" # 1列目の列の名前を変更
colnames(iris)[c(1, 5)] <- c("がくの長さ(mm)", "品種名") # 1と5列目の名前を変更

この記事はここまでで終わりだよ!データフレームの中身を確認することは、プログラミングエラーを減らすためのとっても大事な習慣なんだ!自分に合った、使いやすい方法で行えばいいから、ちゃんと習慣にすることが大事だよ!

この記事のまとめ

  • データフレーム全体を確認する方法には、オブジェクトをそのまま出力する、View関数(Global Environment使用を含む)、tibble関数などがある。
  • オブジェクトに含まれるデータの数はlength関数。データフレームの行数はnrow関数、列数はncol関数などがある。
  • rownames関数、colnames関数で行名、列名を確認したり、変更したりすることができる。

つぎはいよいよサンプルコードを見つけてまねしてみるっていう作業を紹介するからね!ゴールが見えてきた感じがするね~!あとちょっとだ!頑張ろう!

  • この記事を書いた人

Pon

食品会社勤務の元企業研究員(PhD)。食の機能性研究、腸内細菌の研究をメインにしていました。興味関心は公衆衛生、疫学、食品の機能性。好きな食べ物はカレーと杏仁豆腐。コテンラジオ、キングダムが好きです。統計の専門家に憧れます。興味のある研究について、Xやブログで発信しています。

-統計・R
-,

© 2022 Pon Powered by AFFINGER5