今回はATR-Promotionsが販売している小型無線多機能センサTSND151
小型無線多機能センサ「TSND121/151」 |ATR-Promotions
のデータファイルを,Rで読み込むときのお話です.ポイントは,計測時刻をどうやってRの時刻変数に変更するかということです.
TSND151のデータ形式
TSND151で計測されたデータをcsvファイルに書き出すと,
センサ名-年月日-時分秒ミリ秒.csv
のルールでファイル名が付けられます.このファイルの中身は,
ags,51745030,-9269,-13,3381,108,12,-27 ags,51745040,-9269,45,3403,93,24,-3 ags,51745050,-9306,60,3456,105,3,9 ags,51745060,-9284,23,3361,81,-1,49 ags,51745070,-9291,-1,3312,56,-7,58 ags,51745080,-9321,28,3429,53,12,86 ...
のようになってます.各列は以下の変数を表しています.
データ種別 | 時刻 | 加速度 X | 加速度 Y | 加速度 Z | 角速度 X | 角速度 Y | 角速度 Z |
ags | 51745030 | -9269 | -13 | 3381 | 108 | 12 | -27 |
ags | 51745040 | -9269 | 45 | 3403 | 93 | 24 | -3 |
... | ... | ... | ... | ... | ... | ... | ... |
ここで,時刻は2列目ですが,この値を見ただけでは,何時か分かりません.以下では,Rを使って,この値を日時に変換する方法を説明します.
TSND151の計測日時
TSND151の計測結果のcsvファイルにある「時刻」は,計測日の 00:00:00から経過時間を表しています.単位は,ミリ秒です.
ファイルの中には「計測日」は書かれていないです.「計測日」はファイル名に書かれています.
例えば,2022年10月14日14:30:00から計測を開始したのであれば,ファイル名は,
subject-20221014-143000000.csv
となります.ですので,「20221014」の部分を読めば計測日が2022年10月14日
だということが分かります.
ということで,ファイル名から計測日を読み取り,ファイル中の2列目の値 (ミリ秒単位になってます)を,計測日の00:00:00から足してやれば,計測日時が特定できます.
Rスクリプトの例
RでTSND151の計測日時を知りたければ,以下のスクリプトを実行してください.time
という列が追加され,それが計測日時になってます.
# TSND151データのファイル名 FN.ATR <- "subject-20221014-143000000.csv" # ファイル名を分割し,日付を抽出 tmp <- strsplit(FN.ATR,"-") tmp.Date <- paste(substr(tmp[[1]][2],1,4),"-",substr(tmp[[1]][2],5,6),"-",substr(tmp[[1]][2],7,8),sep="") # 計測日の00:00:00を設定 TIME0 <- as.POSIXct(tmp.Date,tz="Japan") # TSND151データの読み込み TMP <- read.csv(FN.ATR,header=FALSE) # 日時をtimeとして追加 TMP$time <- TIME0+TMP$V2/1000