Rでのfor文で繰り返し処理を省略する【効率アップ】

R

こんにちは。
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文を応用していけるとよいですね。
今後ともよろしくお願いします。

タイトルとURLをコピーしました