見出し画像

noteユーザーに捧げるR tutorial #3

前回、データ分析の主役の一人であるベクトルタイプを紹介した。ベクトルを使えば1次元のデータ分析は十分可能だが、実際には様々な項目間の関連などを知りたいといったニーズがある。そこで今回はティブルという、ベクトルを束ねたものを紹介しよう。

今回の目標:ティブルを知る・使えるようになる

【目次】
1. dplyrパッケージのインストール
2. ティブルを作ってみよう
3. ティブルの各列はベクトルタイプ
4. 演習


1. dpylrパッケージのインストール

ティブルを使うために、まずdplyrというパッケージをインストールしよう。(ちなみに発音はディープライヤー。)

install.packages("dplyr", dependencies = TRUE)

install.packages関数は、新しいパッケージをインストールする際に必ず使うので覚えておこう。また、インストール時にCRAN mirrorの選択をするように指示されるが、【0-cloud [https]】を選択すればよい。

インストールしたらdplyrパッケージを呼び出してみよう。

library(dplyr)

dplyrパッケージの関数を使うときは必ずこの関数を最初に書く。大概使うので、Rを立ち上げた時点で癖のように書いてしまってもよい。


2. ティブルを作ってみよう

ティブルは同じ長さのベクトルを束ねることで出来ています。これは複数の項目を同時に扱うときに大変便利です。sadaakiさんが直近で書いた記事のティブルを作ってみましょう。

library(dplyr)

アカウント <- rep("sadaaki", length = 5)
タイトル <- c("#今週のお題 「ハマってる食べ物」に参加してみる", "働く人みんなにおすすめのドラッカー本", "株は実態があるが、お金には実態がない(スマート新書の新刊案内です)", "統計学とRStudioの組み合わせがやばい", "今年最初のコンテンツは。")
スキ <- c(44, 111, 84, 123, 107)
シェア <- c(0, 20, 0, 135, 26)
記事データ <- data_frame(アカウント, タイトル, スキ, シェア)
記事データ

ティブルはdplyrパッケージのdata_frame関数によって同じ長さのベクトルを束ねることで作れる。今回は、アカウント、タイトル、スキ、シェアという列をもつ5行4列のティブルを作ることが出来た。この様にすれば、同じ記事のデータを行単位でまとめることができて賢い。

ちなみに、アカウント列の作成に用いたrep関数は要素を繰り返す(repeatする)ことで出来るベクトルを作るための関数である。

rep(繰り返したいもの, length = 繰り返したい長さ)

という使い方をする。


3. ティブルの各列はベクトルタイプ

ティブルの各列は列の下に<***>で表記されているモードのベクトルタイプとして取り出せる。そのように各列を取り出すには$演算子を用いればよい。

記事データ$タイトル    # タイトルのオブジェクト(ベクトルタイプ)

例えば、タイトルは<chr>なのでcharacterモードのベクトルとして取り出すことが出来る。なので、前回のように文字数をカウントすることも可能である。

nchar(記事データ$タイトル, type = "chars")

また、スキやシェアの列にある<dbl>はdoubleストレージモードと呼ばれるもので、これはnumericモードのベクトルとして取り出せる。なので、前回のように平均値や標準偏差を計算できる。

mean(記事データ$スキ)    # sadaakiさんがもらったスキの平均値
sd(記事データ$スキ)    # sadaakiさんがもらったスキの標準偏差

sadaakiさんが1記事あたり94±31くらいスキをもらっていることが分かりました。さすがに多い、悔しい。


4. 演習

Ex 1. konpyuさんの直近5記事の記事タイトル、スキ、Facebookシェア数を調べてティブルにまとめよ。また、記事タイトルの文字数の平均値や標準偏差を調べよ。

Ex 1の解答

library(dplyr)

タイトル <- c("すべてをjsにまとめる思想を理解する", "妖精さんを描いてみよう", "建築の情報化", "エンジニアは東横インに泊まるべきな理由", "実はHerokuで充分なのでは問題")
スキ <- c(39, 19, 24, 85, 41)
シェア <- c(29, 18, 21, 418, 24)
記事データ <- data_frame(タイトル, スキ, シェア)
記事データ    # 記事データのティブルが完成

タイトルの文字数 <- nchar(記事データ$タイトル, type = "chars")
mean(タイトルの文字数)    # タイトルの文字数の平均値
sd(タイトルの文字数)    # タイトルの文字数の標準偏差

konpyuさんの最近の記事タイトルは14±5.5文字くらいでコンパクトにまとめている様子がうかがえる。やはり文章力の高さを感じる、悔しい。


サポートをいただいた場合、新たに記事を書く際に勉強する書籍や筆記用具などを買うお金に使おうと思いますm(_ _)m