【Rによるデータサイエンス】行・列処理のためのapply関数

本題の前に1つ間違ったことをメモ。
【Rによるデータサイエンス】第2章 データの入出力と編集 データファイル読み込み」にて使用したread.csvとread.table。その時は、違いが分かっていなかったけど、今回初めて知った違いがあった。

read.tableを使用して読み込んだデータは、1行!
なぜなら、データがスペースで区切られていないから!

> testReadTable<-read.table("D:/01_dev/04_DataAnalysis/FX_data/GBPJPY240.csv")
> class(testReadTable)
[1] "data.frame"
> nrow(testReadTable)
[1] 2049
> ncol(testReadTable)
[1] 1

一方、read.csvだと期待する形になっとる。
データがカンマ区切りだから!

> testReadCSV<-read.csv("D:/01_dev/04_DataAnalysis/FX_data/GBPJPY240.csv")
> class(testReadCSV)
[1] "data.frame"
> nrow(testReadCSV)
[1] 2048
> ncol(testReadCSV)
[1] 6

これで、列ごとの平均を計算したりできる。
例えば、2012年12月18日から2014年4月14日までのGBPJPY4時間足のデータの終値の最大値は次のように求められる。

> GBPJPY240[1,]
        Date Time    Open   Close    High     Low
1 2012/12/18 12:0 136.142 135.953 136.213 135.805
> max(GBPJPY240[,4])
[1] 174.784

これだと4列目のClose値だけだが、Open、Close、High、Lowの最高値を纏めて求めたいときに、1つずつ4回max関数を実行しても良いが、apply関数を使用すると一度に求めることができる。

> apply(GBPJPY240[,3:6],2,max)
   Open   Close    High     Low 
174.780 174.784 174.815 174.471