全取材あり! | エンジニアになれるプログラミングスクールおすすめ5社まとめ

※適宜追加していきます。現在編集中

Rでデータ分析をする際の基礎的な操作方法をまとめておく。

 

データの読み込み

①CSVからデータを読み込む

まずはCSVからのデータの読み込み

  • stringsAsFactors: Trueの場合、文字列オブジェクトを因子オブジェクトに変更する。
  • na.string: 欠損値(null)として扱われる値。ベクター型で複数指定することが可能

※Rには、文字列型、数値型、因子型があり、因子型はカテゴリカルデータとして扱われる。(≫7. ベクトルデータの操作

train <- read.csv("../input/train.csv", stringsAsFactors = F, na.strings = c("NA", "")) 
test <- read.csv("../input/test.csv", stringsAsFactors = F, na.strings = c("NA", ""))

参考)

read.table {utils}

≫7. ベクトルデータの操作

 

データの先頭を確認

head関数を使うと、最初の行を確認することができる

> head(result)
query clicks impressions ctr position
1 python 3787 114835 0.03297775 7.460635
2 python できること 3719 7514 0.49494277 1.309289
3 python 学習 1003 4843 0.20710304 2.132149
4 ツイッター フォロワー 増やし方 886 2920 0.30342466 1.766781
5 プログラミング 副業 840 2188 0.38391225 1.021481
6 フォロワー増やし方 823 3176 0.25913098 2.159320

データの最終行を確認

tail関数を使うと、最後の行を確認することができる。

> tail(result)
                            query clicks impressions        ctr position
995  ツイッター フォロー 増やし方      4          49 0.08163265 2.959184
996      ツイッターマーケティング      4          54 0.07407407 6.074074
997                 パイソン html      4          12 0.33333333 1.333333
998         パイソン ホームページ      4          52 0.07692308 2.134615
999          パイソン 入門 サイト      4          15 0.26666667 2.933333
1000            フォロー 増やし方      4          22 0.18181818 2.090909

 

オブジェクトの表示

データを読み込んだ際にデータの中身を確認する。その際str関数を利用する。

データフレームオブジェクトを入れた場合、各種列名ごとの

  • オブジェクト(int/chr)

について表示してくれる。

str(train) ## 'data.frame': 891 obs. of 12 variables: ## $ PassengerId: int 1 2 3 4 5 6 7 8 9 10 ... ## $ Survived : int 0 1 1 1 0 0 0 0 1 1 ... ## $ Pclass : int 3 1 3 1 3 3 1 3 3 2 ... ## $ Name : chr "Braund, Mr. Owen Harris" "Cumings, Mrs. John Bradley (Florence Briggs Thayer)" "Heikkinen, Miss. Laina" "Futrelle, Mrs. Jacques Heath (Lily May Peel)" ... ## $ Sex : chr "male" "female" "female" "female" ... ## $ Age : num 22 38 26 35 35 NA 54 2 27 14 ... ## $ SibSp : int 1 1 0 1 0 0 0 3 0 1 ... ## $ Parch : int 0 0 0 0 0 0 0 1 2 0 ... ## $ Ticket : chr "A/5 21171" "PC 17599" "STON/O2. 3101282" "113803" ... ## $ Fare : num 7.25 71.28 7.92 53.1 8.05 ... ## $ Cabin : chr NA "C85" NA "C123" ... ## $ Embarked : chr "S" "C" "S" "S" ...

オブジェクトの型変換

オブジェクトの型変換を行う。as.factorを使うと順序無し因子として扱うことができる(統計学的には名義尺度)。

as.orderdを使うと、順序あり因子(順序尺度)として扱うことができる。

列を指定する場合、df$列名 で指定し、代入することができる。

all$Sex <- as.factor(all$Sex)
all$Survived <- as.factor(all$Survived)
all$Pclass <- as.ordered(all$Pclass) 

データの並び替え

データフレームを降順に並べる場合は、以下の通り。

> head(ga_data)
# A tibble: 6 x 5
        landingPagePath goal2Starts avgTimeOnPage pageViews          ctr
                  <chr>       <int>         <dbl>     <int>        <dbl>
1             (not set)          25      0.000000         0          Inf
2                     /           1     30.757771      2178 0.0004591368
3             /2019/02/           0      0.000000         3 0.0000000000
4 /?p=1615&preview=true           2     64.067961       107 0.0186915888
5            /about-me/           0      2.071429        15 0.0000000000
6    /affiliate-policy/           0     35.285714         9 0.0000000000

> ga_data[order(ga_data$goal2Starts, decreasing = T), ]
# A tibble: 121 x 5
                                                                            landingPagePath goal2Starts avgTimeOnPage pageViews         ctr
                                                                                      <chr>       <int>         <dbl>     <int>       <dbl>
 1                                     /sidework/how-to-earn-money-by-programming-sidework/         179      51.13059      6055 0.029562345
 2                                                        /python/python-learning-websites/         111      40.26789      4258 0.026068577
 3                                                          /python/python-learn-by-myself/          97      49.32393      2222 0.043654365

列の追加

例えばpageViewsとgoal2StartsというCVのデータから、CVRを測定したい場合は以下の通り。

ga_data$ctr <- ga_data$goal2Starts / ga_data$pageViews

データの結合

データフレームどおしの結合は、mergeを用いる

#TODO

 

グラフでの可視化

ggplotを利用する。利用する際にはlibraryを利用する。

library(ggplot2)
library(tidyverse)

最初の数行を取得する場合はhead関数。

> head(result)
query clicks impressions ctr position
1 python 3787 114835 0.03297775 7.460635
2 python できること 3719 7514 0.49494277 1.309289
3 python 学習 1003 4843 0.20710304 2.132149
4 ツイッター フォロワー 増やし方 886 2920 0.30342466 1.766781
5 プログラミング 副業 840 2188 0.38391225 1.021481
6 フォロワー増やし方 823 3176 0.25913098 2.159320

データの型も確認しておくが、データフレーム型になっている。

> str(result)
'data.frame':	1000 obs. of  5 variables:
 $ query      : chr  "python" "python できること" "python 学習" "ツイッター フォロワー 増やし方" ...
 $ clicks     : num  3787 3719 1003 886 840 ...
 $ impressions: num  114835 7514 4843 2920 2188 ...
 $ ctr        : num  0.033 0.495 0.207 0.303 0.384 ...
 $ position   : num  7.46 1.31 2.13 1.77 1.02 ...
 - attr(*, "aggregationType")= chr "byProperty"

散布図を描く

散布図を描く。データはGoogle Search Consoleから利用する。

散布図を描く場合は、以下のように描く。

ggplot(result, aes(x=position, y=ctr))+geom_point() + labs(title="Position and Page CTR")

resultのところには、利用するデータフレーム、x軸の値、y軸に値を入れる。散布図にする場合はgeom_pointを利用する。