Code
[1] 7920
2024/11/06
readr
のread_csv()
関数を用いたデータの読み込みread_csv()
関数の特徴tibble
で返す..
(ピリオド)に変換したり,うっかりprint()
関数で表示すると膨大な行数全てを表示してしまったりと,様々な不都合な側面があり,tibble
はそれらを改良したものである1.X.1
, X.2
, X.3
などのように)変換しない.read_csv()
関数の型推論の柔軟性'data.frame': 21 obs. of 3 variables:
$ date : chr "2020-04-01" "2020-04-02" "2020-04-03" "2020-04-06" ...
$ firm1: num -0.03948 0.00598 0.05579 0.04193 -0.02019 ...
$ firm2: num 0.07696 -0.00725 -0.0173 0.00217 0.07555 ...
spc_tbl_ [21 × 3] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
$ date : Date[1:21], format: "2020-04-01" "2020-04-02" ...
$ firm1: num [1:21] -0.03948 0.00598 0.05579 0.04193 -0.02019 ...
$ firm2: num [1:21] 0.07696 -0.00725 -0.0173 0.00217 0.07555 ...
- attr(*, "spec")=
.. cols(
.. date = col_date(format = ""),
.. firm1 = col_double(),
.. firm2 = col_double()
.. )
- attr(*, "problems")=<externalptr>
read_csv()
関数で読み込んだdate
列が日付型 (Date
)になっていることが確認できる.他方,基本パッケージのread.csv()
関数で読み込むと,この列は文字型 (chr
)と認識されていたので,read_csv()
関数の方がより正確に型推論できていることが分かる.[1] "numeric"
[1] "numeric"
firm_ID
列とindustry_ID
列は,いずれもカテゴリカル変数にも関わらず,数値型 (numeric
)になっている.as.factor()
関数を使ってきちんとファクター型に変換しておこう.# A tibble:6 x 11
以下を見てみると,各変数の下にはそれぞれの変数のデータ型が記述されており,firm_ID
とindustry_ID
の下にある<fct>
は,factor
(ファクター)型を意味する.それ以外の列の<dbl>
はdouble
(倍精度浮動小数点数)型を意味し,実数を表すのに用いられる数値型の一種である.summary()
関数を用いてみよう. year firm_ID industry_ID sales
Min. :2015 1 : 6 3 :1760 Min. : 205
1st Qu.:2016 2 : 6 10 :1702 1st Qu.: 16103
Median :2018 3 : 6 7 :1334 Median : 40431
Mean :2018 4 : 6 1 :1143 Mean : 166007
3rd Qu.:2019 5 : 6 9 : 667 3rd Qu.: 118314
Max. :2020 7 : 6 8 : 429 Max. :3496433
(Other):7884 (Other): 885
OX NFE X OA
Min. :-353606.7 Min. :-285383.9 Min. :-357624.8 Min. : 217
1st Qu.: 399.3 1st Qu.: -66.4 1st Qu.: 383.3 1st Qu.: 12560
Median : 1602.9 Median : -1.2 Median : 1586.1 Median : 30799
Mean : 7968.9 Mean : 64.0 Mean : 7904.9 Mean : 152273
3rd Qu.: 5260.5 3rd Qu.: 41.4 3rd Qu.: 5204.6 3rd Qu.: 93469
Max. : 398034.5 Max. : 331035.3 Max. : 572588.7 Max. :7987936
NA's :1
FA OL FO
Min. : 288 Min. : 35 Min. : 44
1st Qu.: 6835 1st Qu.: 3965 1st Qu.: 3757
Median : 19095 Median : 10868 Median : 11125
Mean : 80185 Mean : 50261 Mean : 70681
3rd Qu.: 52118 3rd Qu.: 33111 3rd Qu.: 35446
Max. :29250611 Max. :2817975 Max. :7026924
summary()
関数は,数値型(整数型や倍精度浮動小数点数型)が代入された場合,各データセットに含まれる各変数の平均や中央値,分位点を返す.[1] FALSE TRUE TRUE TRUE TRUE TRUE
TRUE
とFALSE
は,通称論理型 (logical
)と呼ばれるデータ型である.その特徴は,TRUE
とFALSE
の二つのみで構成される点にある.この二つを算術関数の引数として用いると,TRUE
が1,FALSE
が0と解釈されるので,sum()
関数の引数にcomplete.cases(financial_data)
を代入することで,欠損が無い観測値数を数え上げてくれる.tidyr
に含まれるdrop_na()
関数は,第二引数を省略した場合,入力されたデータフレームに対し,欠損値が存在しない行のみを抽出して返す.dplyr
のパイプ演算子の使い方目標
%>%
は,左側で処理されたデータフレームを,右側の関数の第一引数として受け渡す役割を果たす.%>%
の入力は,Rstudio上で以下のショートカットキーを利用すると便利である.
firm_ID
,year
,sales
の三列を選択し,こうして出来上がった新たなデータフレームをfinancial_data_2015
として定義しよう.financial_data_2015
を作らなくても,目標を達成するだけであれば,filter()
関数を適用した後のデータをggplot()
関数に引き渡してあげれば良い.ggplot2
でヒストグラムを描くには,geom_histogram()
関数を用いる.aes()
引数には,\(x\)軸の値としてlog(sales)
を指定する.scale_y_continuous(expand = c(0,0))
はヒストグラムが\(x\)軸にぴったりくっ付くよう調整する役割を果たす.mutate()
関数を使って新たな列の追加(教科書第4.6節)\[ \begin{align} ROE_{t} = \frac{X_{t}}{\mathit{BE}_{t-1}} \label{eq:ch04_ROE} \end{align} \]
目標
financial_data
に\(t\)期末の株主資本BE
列を追加する.financial_data
に\(t-1\)期末の株主資本を表すlagged_BE
列を追加する.financial_data
にROE
列を追加ROE
をヒストグラムに可視化する.ただし,作図に利用するのは,ROE
が-0.2から0.4の観測値のみ,ビン幅は0.01に指定すること.また,\(x\)軸のラベルはROE Interval
,\(y\)軸のラベルはFrequency
とすること.BE
列の追加dplyr
では新しい列を追加するのにmutate()
関数を用いる.lagged_BE
列の追加ROE
列を追加mutate()
関数を使って,ROE
列を追加しよう.ROE
のヒストグラムggplot2
を利用し,ROE
をヒストグラムにより描画しよう.geom_histogram()
関数のbreaks
引数により\(x\)軸の範囲とビン幅を調整している.seq()
関数は等差数列を作成するための関数であり,第一引数に始点,第二引数に終点,第三引数に等差数列の差分を取る(教科書84頁).ROE
を描画することを考え,ビン幅に相当する等差数列の差分は0.01としてみよう.summarize
関数の使い方目標
tidyr
に含まれるdrop_na()
関数は,第二引数で指定した変数(この場合であればROE
列)に欠損値が存在しない行のみを抽出して返す(教科書152頁).group_by()
関数を用いて,年度year
に基づいてグループ化.summarize()
関数を用いて,各グループ(年度)ごとに平均ROEを計算し,mean_ROE
列に保存する.
summarize()
関数を適用することにより,グループ化は解除されるため,ungroup()
の追加は不要である.ただし,summarize()
関数は1つのグループしか解除しないため,複数の変数でグループ化した場合は,最後にungroup()
関数を挿入する必要がある.# 年度ごとにROEの平均値を求め,折れ線グラフにより描画
financial_data %>%
drop_na(ROE) %>%
group_by(year) %>%
summarize(mean_ROE = mean(ROE)) %>%
ggplot() + # ggplot()関数にデータを引き渡す
geom_line(aes(x = year, y = mean_ROE)) +
# 折れ線グラフを描くにはgeom_line()関数を用いる
labs(x = "Year", y = "Mean ROE") + # 両軸のラベルを設定
theme_classic() # グラフ全体の体裁を設定
Exercise 1
firm_ID
が350
の企業の売上高を折れ線グラフで表示せよ.ただし,\(y\)軸は売上高sales
,\(x\)軸は年度year
を取ることとする.Exercise 2
ROE_first_quintile
という変数に保存せよ.
quantile()
関数を用いる.この関数は第一引数にデータセット,第二引数に求めたい分位点の値をパーセントでなく小数表示で代入する.また,データセットに欠損値が含まれている場合,na.rm = TRUE
を追加する必要がある.na.rm
はremove NA values の略を意味する.ROE_first_quintile
より小さい企業は何社あるか答えよ.ただし,ROEが欠損している企業はカウントしないこと.Financial Accounting