R言語のsummary関数は便利なのですが、標準偏差や変動係数が算出されないことが不満でした。探せばそういう関数あるのかもしれないですが、関数を作る練習として、自作してみました。
# 自動でsummary関数、標準偏差、変動係数を出力する関数
jidou_sammary <- function(df) {
# Step1 列数の確認
retsu_suu <- length(colnames(df))
retsu_suu
# Step2 forで繰り返し
for(i in 1:retsu_suu) {
print(colnames(df)[i]) # 変数名を出力
print(summary(dfi))# summary関数を出力
# if構文で数値型だったら標準偏差と変動係数も出力
if(is.numeric(dfi) == TRUE) {
print("標準偏差")
print(sd(dfi))
print("変動係数")
print(sd(dfi) / mean(dfi, na.rm = TRUE))
}
# if構文終わり
print("") # 1行あけるため
} # for構文終わり
# Step3 retsu_suuの削除
rm(retsu_suu)
}
こんな感じです。
早速、関数を実行してみます。
R言語にあらかじめ用意されているデータセットでいくつか試します。
まずは、irisから
うまく動きました。Petal.Widthの変動係数が一番大きいですね。Speciesはsetosa, versicolor, virginicaの三種類で50個ずつです。
次は、carsでやってみます。
carsはspeedとdistの2種類ですね。distのほうが変動係数が大きいです。
次は、womenで実行してみます。
これもうまくいきました。
あ、データの数を数えるようにしましょう。
# 自動でsummary関数、標準偏差、変動係数を出力する関数
jidou_sammary <- function(df) {
# Step1 列数の確認
retsu_suu <- length(colnames(df))
retsu_suu
# Step2 forで繰り返し
for(i in 1:retsu_suu) {
print(colnames(df)[i]) # 変数名を出力
print(summary(dfi))# summary関数を出力
# if構文で数値型だったら標準偏差と変動係数も出力
if(is.numeric(dfi) == TRUE) {
print("標準偏差")
print(sd(dfi))
print("変動係数")
print(sd(dfi) / mean(dfi, na.rm = TRUE))
}
# if構文終わり
print(length(dfi) - sum(is.na(dfi)))# データの数
print("") # 1行あけるため
} # for構文終わり
# Step3 retsu_suuの削除
rm(retsu_suu)
}
print(length(dfi) - sum(is.na(dfi)))というのを追加して、NAを除いたデータの数を数えるようにしました。うまく動くか調べてみます。
まず、NAを含んだ変数のあるテスト用のデータフレームを作成しました。
さあ、関数を実行します。
あ、標準偏差と変動係数がNAになっちゃいましたね。!sd関数にna.rm = TRUEをつけ忘れましたね!
# 自動でsummary関数、標準偏差、変動係数を出力する関数
jidou_sammary <- function(df) {
# Step1 列数の確認
retsu_suu <- length(colnames(df))
retsu_suu
# Step2 forで繰り返し
for(i in 1:retsu_suu) {
print(colnames(df)[i]) # 変数名を出力
print(summary(dfi))# summary関数を出力
# if構文で数値型だったら標準偏差と変動係数も出力
if(is.numeric(dfi) == TRUE) {
print("標準偏差")
print(sd(dfi, na.rm = TRUE))
print("変動係数")
print(sd(dfi, na.rm = TRUE) / mean(dfi, na.rm = TRUE))
}
# if構文終わり
print("データ数")
print(length(dfi) - sum(is.na(dfi)))# データの数
print("") # 1行あけるため
} # for構文終わり
# Step3 retsu_suuの削除
rm(retsu_suu)
}
と編集しました。
これでもう一度やってみます。
うまくいきました。はじめのAという変数のデータ数は4になりました。
今回は以上です。