R データフレームのFactor型変数の水準順序の入れ替え方法
スマートなやり方かどうかは分からないが、データフレームのFactor型変数の水準順序の入れ替え方法に関するメモ。
季節気温の疑似データを作成。
Season=c( rep("春",5), rep("夏",3), rep("秋",4), rep("冬",3) )
Temp=c( c(20,21,15,15,21), c(32,33,35), c(16,10,20,9), c(0,7,9) )
( TempData <- data.frame(Season, Temp) )
Season Temp 1 春 20 2 春 21 3 春 15 4 春 15 5 春 21 6 夏 32 7 夏 33 8 夏 35 9 秋 16 10 秋 10 11 秋 20 12 秋 9 13 冬 0 14 冬 7 15 冬 9
季節ごとに平均気温を集計。
tapply(TempData$Temp, TempData$Season, mean)
夏 秋 春 冬 33.333333 13.750000 18.400000 5.333333
このように、Season変数は文字コード順に従い、"夏","秋","春","冬"順で分析結果が出力される。
当然、"春","夏","秋","冬"順で分析結果を得たい。
意図的に水準の順序を入れたデータフレームを作成するかたちで対処。
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/16.html
を参考に、factor関数でlevels引数を指定。
Season <- factor(TempData$Season, levels=c("春","夏","秋","冬"))
TempData2として新しいデータフレームを作成。
TempData2 <- data.frame(Season, Temp=TempData$Temp)
tapply(TempData2$Temp, TempData2$Season, mean)
春 夏 秋 冬 18.400000 33.333333 13.750000 5.333333