シミュレーション・データの準備とR言語の基本的な機能
2026/04/17
単純な小売業を例に
(引用)東京証券取引所上場部「四半期開示の見直しに関する実務の方針」2023年11月22日.
事前の予想の代表例— 企業会計審議会第54 回監査部会【白川委員】
現実問題として,おそらくプライム市場に上場される名立たる企業は,レビューをつけられるのではないかと勝手ながら想像する(後略)
(引用)日本経済新聞,2024年9月5日付朝刊.
Exercise 1
Step 1. 本書のサポートサイトのS3にアクセス.
Step 2. Zipファイルをダウンロード. 
Step 1. 本書のサポートサイトのS2にアクセス.
Step 2. Zipファイルをダウンロード. 
Step 3. 教科書「まえがき」ivページに記載のパスワードを入力して解凍.
Step 4. 解凍されたファイルを再度圧縮し,改めてZipファイルを作成.
Step 5. Posit Cloudに先の手順により作成されたZipファイルをアップロード.
my_piという変数として記憶したい場合は,以下のように書けば良い.組み込み変数の上書きに注意
Rにはpi(= 3.141593…),T,F,Inf(無限大)など,あらかじめ定義された組み込み変数が存在する.pi <- 3.14のように同名の変数に代入すると組み込みの値が上書きされてしまい,思わぬバグの原因となる.変数名を付ける際は,my_piのようにこれらと重ならない名前を選ぶようにしよう.
=演算子は使わず,<-演算子を使うのがポイント!R言語では=でも代入は動作するが,関数の引数指定(例: seq(from = 1, to = 10))と混同しやすいため,代入には<-を使うのがRコミュニティの慣習である.演算子を素早く出したい人は,以下のショートカットを利用すれば良い.
my_piを定義すれば,例えば,半径4の円の面積Sを求めるとき,my_piを使って計算することができる.可読性の高いコードを目指して
Rは「半角スペース」を無視するので,あってもなくてもコード上は一緒.ただし,可読性の観点から様々な作法が存在する.GoogleのRユーザー・コミュニティでは,例えば,二項演算子 (binary operators)の前後には半角スペースを挿入することが徹底されている.
xとして定義する場合は,以下の通りである.c()関数はベクトルを作成する関数であり,cはconcatenate(連結する)の略である._(アンダースコア),.(ピリオド)sales_growth(売上高増加率), FY2020.EARNINGS(2020年度の利益)数字からははじまる変数は付けられない (ダメな例: 2020_earnings, 001Variable)
大文字と小文字は区別されるので,Salesとsalesは別々の変数として認識される.
プログラミング全般での名前の付け方の作法
salesGrowth, annualStockDataSalesGrowth, AnnualStockDatasales_growth, annual_stock_datasales-growth, annual-stock-dataExercise 2
20点,35点,40点,70点,95点という5人の成績を示したテストの点数 (Test Score)を表すベクトルを作成してみよう.なお,命名規則はスネークケースによること(例: test_score).
平均点を求めてみよう.
mean()関数の第一引数に先に作成したTest Scoreのベクトルを代入すればオッケー!Nとする新たな変数を作成しよう.mean()関数は平均値を返すが,同様に,length()関数はベクトルの次元を返す.Rベクトルを作ってみよう!引数 (arguments)とは
関数に受け渡す値を指し,例えば三つの引数を取る関数 example_function(A, B, C)に関して,Aを第一引数,Bを第二引数,Cを第三引数と呼ぶ.関数ごとに引数の数や指定の仕方は異なる.
R <- seq(0.1, 0.2, 0.01)は,R <- seq(from = 0.1, to = 0.2, by = 0.01)の省略形である.seq() 関数の場合,引数名が省略されていると,最初の三つの引数はそれぞれ等差数列の始点 (from),終点 (to),差分 (by)と解釈し,実行してくれる.help(関数名)あるいは?関数名と打つことで,関数のヘルプを表示できることも知っておこう.R[2]とすれば,2番目の要素が参照できる.要素の指定は変数を用いて行うこともでき,i <- 2と定義しておけば,R[i]は2番目の要素を表す.R[2:5]と入力すれば良い.一般にコロン (:)は公差が1の等差数列を作成するために用いられ,2:5はc(2, 3, 4, 5)という4次元ベクトルを作成する.R[2:length(R)]と入力する.length()関数は,Exercise 2で学習したように,ベクトルの次元を返すので,ここではlength(R)は11となる.(10, 11)という2次元ベクトルと,ABCという文字列をそれぞれの要素として含んでいる.リストは要素の参照方法が通常のベクトルと異なり,カッコを二重にする.xの1番目の要素を参照するには,x[[1]]と指定.上の例だと,x[[1]]は(10, 11)というベクトルであるため,そのうち11を参照したければ,x[[1]][2]と指定.tibble:データフレームの改良版
データフレームには,列名の空白を勝手に.(ピリオド)に変換したり,print()関数で表示すると膨大な行数を全て表示してしまったりと,いくつかの不便な点がある.tibbleはそれらを改良したデータ構造であり,次回以降に学ぶtidyverseパッケージ群で標準的に用いられる.tibbleはあくまでデータフレームの改良版なので,実際のデータ分析では両者の区別を意識する場面は少ない.まずはdata.frameの基本をしっかり押さえておこう.
x[[1]]と同じ内容を参照するのに,x$IDと指定することもできる.x[, 1]として特定の次元を空白とすると,その次元は全ての要素が指定される.したがって,x[, 1]はx$IDと全く同じ参照となる.for文の使い方for文の概要for文とは?
for (Variable Name in Sequence) {
Do Something
}
for文のように,コードのどの行が実行されるか順序を制御する構文のことを,一般に制御構文と呼ぶ.for文の練習問題Exercise 3
for文を使って,3の段の掛け算(\(3 \times 1, 3 \times 2, \ldots, 3 \times 9\))の結果を順番に表示してみよう!(ヒント!)
i in 1:9として,iが1から9まで順番に変化するようにする.for文を使った発展問題Exercise 4
for文を使って順番に表示せよ.(ヒント!)
set.seed()関数の引数には,自分の学籍番号の下4桁を入力すること.set.seed()関数は乱数の種(seed)を固定する関数であり,同じ種を指定すれば何度実行しても同じ乱数が生成される.学籍番号の下4桁が異なれば,生成されるデータも異なるため,各自固有のデータで練習することになる.問題
scoreの3番目と7番目の要素をそれぞれ表示し,その合計を計算せよ.問題
scoreの全要素の合計と平均値を,それぞれsum()関数とmean()関数を使って求めよ.問題
for文とif文を組み合わせて,scoreの中から70点以上の要素の個数を数えよ.(ヒント!)
countを最初に0で用意する.for文でscoreの各要素を順番に見ていき,if文で70以上かどうかを判定し,該当すればcountに1を加える.for文の書き方には二つのスタイルがある.どちらを使っても結果は同じなので,自分が読みやすい方を選ぼう.問題
scoreを2行5列の行列score_matrixに変換し,1行3列目と2行4列目の値をそれぞれ表示せよ.
matrix()関数のnrow引数を使えば行数を指定できる.2025 経営データ分析(会計)