東京に棲む日々

データ分析、統計、ITを勉強中。未だ世に出ず。

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