こんにちは。
Rを使って大きなデータを扱う場合に、同じコードを何度も手入力していませんか。
今回は”for文”で作業量を大幅に減らす方法を紹介します。
✅疑問
✓Rで同じ検定を繰り返し行う方法が知りたい
✓Rで”for文”を回していく方法がわからない
✓ほかのページも見たけどわかりにくい…
このような疑問に答えていきます。
僕は医療系の仕事をしながら大学院に通って4年目です。SPSSやRを使ってデータ解析、学会発表や論文投稿も行っています。現在はPythonも勉強中です。
では始めていきます。
✅このような方にオススメ
・Rを使ってデータ解析をしている方
・R初心者の方
でははじめていきます。
Rで繰り返しの処理ってどうやるの【for文を使いましょう】
例えば
こんなデータがあったとします。
(これは「教育用標準データセット」からダウンロードしました。)
リンクはこちら
↑今回は市区町村別データのCSVファイルを使用します。
↑ このデータの北海道札幌市(4行目)~根室市の平均(26行目)で4列目(縦が列です)~9列目の平均と標準偏差を求めてみましょう。
まずデータを読み込みます。Rへのデータ読み込みに関しては以下の記事を参照してください。
Rにexcelで作ったファイルを読み込む方法【CSV形式で読み込みましょう】
↑ダウンロードしたデータを「demo」という名前で保存しています。
まずはfor文を使わずに普通に求めてみます。
↑このように同じ数式を何度も繰り返し行う必要があります。
ちなみに
df[3:25,4]は膨大な行列の中で部分を指定する意味であり、df[行,列]の順です。
札幌市~根室市なので4~26行目のはずですが、先頭行は0行目となるのでマイナス1するのでしたよね。
関数の解説
・mean() :平均値を求める数式
・as.numeric() :文字型を数字(numeric)に変更する数式。今回の都道府県データを読み込んだ際に文字型が数式(numeric)ではなく文字(charactor)になっており計算が行われなかったので変更しました。通常は不要かと思います。
for文を使って平均値を求めてみます【簡単】
↑
<関数の解説>
・ x<-4:9
今回は北海道札幌市(4行目)~根室市(26行目)の平均値を4列目~9列目で求めたかったのでした。繰り返しになる部分はn列目(4~9)の部分になります。そのためxという変数に4~9を代入しています。
・for (i in x){
for文ではまずこのように表現します。「i」という変数に「x」を代入しました。{
がfor文に挿入する式のスタートの合図になります。
・print (mean(as.numeric(df[3:25,i])))
次に繰り返し処理したい式を挿入します。
printを入れて下さい。
print()でデータの内部を表現するような関数になっています。printを入れないと結果が出力されません。
繰り返しですがas.numericは文字型の変更処理で今回は必要でした。
csvファイルを読み込んだ際に計算が上手くいかない場合は文字型がcharacterになっていないか確認し、必要に応じて今回のようなas.numericをつけると良いです。
・}
最後に}で閉じると、青字のように結果が出力されます。
↑上から4列目…9列目の順で並んでいます。
これで札幌市(4行目)~根室市(25行目)までの4~9列目の項目の平均が求められました。
for文で標準偏差も求めてみます。
標準偏差=√分散
です。
Rではsd()で求めることができます。
先ほどと同様の手順で求めています。
2行目でmeanの部分がsdに変更になっています。
結果は上から4列目~9列目のものです。
以上、本日はRでのfor文の使い方を紹介しました。
今回の内容を基礎にして、いろいろなデータにfor文を応用していけるとよいですね。
今後ともよろしくお願いします。