この文章の最新バージョンは草案です。Diffこのバージョン(2013/05/01 02:37)は草案です。
承認件数:0/1

**以前のリビジョンの文書です**

,

Rでのデータの取扱い

データ型

日付型データ

Rデータ自由自在を参考にした

日付型データへの変換

年月日時刻備考
2009040720:38
2009040808:50明日の集合時間
2009040810:00入学式開始時間

のようなデータフレーム“TT”が与えられた場合に 日付部分をうまく日付型データにするには,

yyyymmddHHMM <- paste(TT[,1], TT[,2], sep='')
DATE <- strptime(yyyymmddHHMM, format='%Y%m%d%H:%M')

とすれば良い.結果は

"2009-04-07 20:38:00" "2009-04-08 08:50:00" "2009-04-08 10:00:00"

となる.

  • strptime関数はPOSIX日付を返し,オプションtzでタイムゾーンを指定可能(日本は“JST”)
  • POSIX日付の値は,内部的には1970年1月1日0時0分0秒からの経過秒数として保存されている(実数型に変換すると確認できるが,時差に注意(出てきた値を3600で除すれば,時差が出る))

日付型データにすると嬉しいこと

DATE[1]-DATE[2] #時間差
difftime(DATE[1], DATE[2], units="mins")  #時間差(分)
format(DATE[1], '%A') #曜日を表示
format(DATE[1], '%a') #曜日を表示
format(DATE[1], '%b') #月を表示
format(DATE[1], '%B') #月を表示
format(DATE[1], '%H') #10進法で時間(24時間表示)を表示,Mで分,Sで秒

日付型データと実数型の関係

行列 matirix

行列をMとする.

diag(M)  # 行列の対角成分を抽出
sum(diag(M))  # 行列の対角成分の和を計算

クラス分類(判別分析など)を使った後,結果をconfusion matrixで整理することが多い.confision matrixからerror ratioを計算するには,上記の対角成分の和を利用して

(sum(M)-sum(diag(M)))/sum(M)

とすればよい.

標本抽出 sampling

無作為抽出 random sampling

irisデータから重複しない10個の標本を抽出

sample(data=iris, size=10, replace=FALSE)

層化抽出 stratified sampling

モデルパラメータを求めたり,モデルの評価・比較を行うために交差検証法 cross validation を行うことがよくある. データを分割する際に,元のデータ分布に近いような分割を行いたいときにstrata()関数が使える(sample()関数とsplit()関数を駆使して実装したら,見事に車輪の再発明だった)誤りだった.strata()関数では,以下のようなサンプリングを(単発で)行うことは出来るが,データを分割するのには適していない.無駄じゃなかった.

irisデータから“Species”を層化変数(層を分ける基準)として,Speciesがsetosaのデータを7個,versicolorを8個,virginicaを9個,合計24個のサンプルを持つ標本集合を得る.

s <- strata(data=iris
, stratanames=c("Species")
, size=c(7,8,9)
, method="srswor"  # simple random sampling without replacement 
)
stratified.data <- getdata(data=iris
,m=s
)

元々のデータフレームに“ID_unit”,“Prob”,“Stratum”列が追加され,“Stratum”が分割されたデータの属する層(この場合Species)を数字で表す.よって,SpeciesとStratumはサンプル毎に対応が取れている.

memo/r/datamanipulationwithr.1367375838.txt.gz · 最終更新: 2016/07/17 04:22 (外部編集)
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0

- Rental Orbit Space -