Rとウェブ解析:データフレームの最小、最小値を元のデータに追加するオリジナル関数「DataMaxMin」です。


データフレームの最小、最小値を元データに追加するオリジナル関数DataMaxMinを作成しました。
エクセルをXlConnectパッケージで取り込み後、関数DataMaxMinで処理することで、fmsbパッケージでレーダーチャートを簡単に作成できるのではと思います。コードを改造することで標準偏差や中央値に変更することが出来ます。


コードの紹介

デフォルトでは最大値、最小値を0にしMaxMinVecというデータを作成します。zeromax,zerominをFALSE設定することで元データから最大値、最小値を取得することが出来ます。詳細は下記コード内を確認ください。コードを実行することでDataMaxMin(data = NULL, colname = colnames(data), zeromax = TRUE, zeromin = TRUE, fold = 1)を使えるようになります。なお、最大値はzeromax = FALSE時にfoldで倍率を設定できます。

オリジナル関数DataMaxMin

#処理データを設定しないとエラーになります。デフォルトでは行名は元のデータを使用します。
DataMaxMin <- function(data = NULL, colname = colnames(data), zeromax = TRUE, zeromin = TRUE, fold = 1){

  data <- as.data.frame(data) #おまじない
  SumZero <- sum(zeromax, zeromin) #最大,最小の取得判断
  SumVec <- c(zeromax, zeromin) #最大,最小の取得判断

  if (SumZero == 2){

    MaxVec <- rep(0, ncol(data))
    MinVec <- rep(0, ncol(data))

  }else{

    if (SumZero == 1){

     switch(which(SumVec == TRUE), MaxVec <- rep(0, ncol(data)), MinVec <- rep(0, ncol(data)))
     switch(which(SumVec == FALSE), MaxVec <- apply(data, 2, max), MinVec <- apply(data, 2, min))

    }else{ 

      MaxVec <- apply(data, 2, max)
      MinVec <- apply(data, 2, min)
    }
  }

  MaxMinVec <<- rbind(MaxVec * fold, MinVec, data) #最大、最小、元データの順に結合して完成
  colnames(MaxMinVec) <<- colnames(data) #行名の付与

}

出力例

以下のデータ例を処理した例を紹介します。

#データ例
AnaData <- data.frame(
  total = runif(15, 1, 5),
  phys = rnorm(15, 10, 2),
  psycho = runif(15, 4, 20))

DataMaxMin


少しでも、ウェブや実験の解析が楽になりますように!!
もし、不明点がありましたらこちらからお問い合わせください。

スポンサードリンク

おすすめコンテンツ


スポンサードリンク