[1] 7920
2025/05/02
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.3
1st Qu.:2016 2 : 6 10 :1702 1st Qu.: 16103.3
Median :2018 3 : 6 7 :1334 Median : 40430.7
Mean :2018 4 : 6 1 :1143 Mean : 166007.0
3rd Qu.:2019 5 : 6 9 : 667 3rd Qu.: 118313.8
Max. :2020 7 : 6 8 : 429 Max. :3496433.0
(Other):7884 (Other): 885
OX NFE X
Min. :-353606.7 Min. :-285383.87 Min. :-357624.8
1st Qu.: 399.3 1st Qu.: -66.43 1st Qu.: 383.3
Median : 1602.9 Median : -1.19 Median : 1586.1
Mean : 7968.9 Mean : 64.02 Mean : 7904.9
3rd Qu.: 5260.5 3rd Qu.: 41.36 3rd Qu.: 5204.6
Max. : 398034.5 Max. : 331035.25 Max. : 572588.7
NA's :1
OA FA OL
Min. : 216.5 Min. :2.884e+02 Min. :3.504e+01
1st Qu.: 12559.9 1st Qu.:6.835e+03 1st Qu.:3.965e+03
Median : 30799.2 Median :1.910e+04 Median :1.087e+04
Mean : 152272.8 Mean :8.019e+04 Mean :5.026e+04
3rd Qu.: 93469.2 3rd Qu.:5.212e+04 3rd Qu.:3.311e+04
Max. :7987936.2 Max. :2.925e+07 Max. :2.818e+06
FO
Min. : 43.6
1st Qu.: 3757.4
Median : 11125.2
Mean : 70680.6
3rd Qu.: 35446.0
Max. :7026923.6
summary()関数は,数値型(整数型や倍精度浮動小数点数型)が代入された場合,各データセットに含まれる各変数の平均や中央値,分位点を返す.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が欠損している企業はカウントしないこと.2025 経営データ分析(会計)