-1

数百のデータ ファイルがあり、それぞれが 3 行のヘッダーと、サンプリングされたデータ値の 1 つの列で構成されています。"Time=10:00:00.156"ヘッダーには、ファイルが作成された時間"Tsamp=0.1000"を示す時間フィールドを含む複数のフィールドがあります"TimeUnits=1.0000E-06"。この情報を使用して、ファイル内の取得した各データ値の時間のベクトルを作成したいと考えています。

これどうやってするの?chron および Zoo ライブラリとさまざまな ts 関数を試しましたが、できませんでした。どんな助けでも心から感謝します。

これをスクリプトに入れて、すべてのファイルを自動的に処理できるようにしたいと考えています。最終的には、列 1 に上記のすべてのファイルの連結された時間を示し、列 2 に上記のすべてのファイルの連結された測定値を示す 2 つの列を持つデータ フレームです。

ATF v1.00 Date=23-01-2012; 
Time=10:38:56.421000; 
TracePoints=16384; 
TSamp=0.100000; 
TimeUnits=1.00000e-006; 
AmpToVolts=1.0000;
TraceMaxVolts=0.10000; 
PTime=0.00000; 
STime=0.00000; 
[TraceData] 
 4.82178e-004 
-1.37329e-003 
2.19116e-003 
4.38843e-003 
1.65405e-003 
3.36304e-003 
5.95093e-003 
2.19116e-003

繰り返しますが、助けていただければ幸いです。

4

1 に答える 1

0

コメントに入力したデータを含めるように質問を編集しました。a の使用textConnectionはファイルへのアクセスと非常に似ていますが、最初に を使用してから を使用する場合は、スキップ オプションを使用する必要があるかもしれreadLinesませread.tableん。サブミリ秒のデータを R 時間クラスに変換できるとは思いません。時間データの精度は、ミリ秒の解像度で数十年を表す必要があるために消費され、仮数部に十分な余分な桁がないためです。 8 バイトの数値。Zoo パッケージはインデックスとして時間を必要としないため、「時間」時間スケールではなく、シーケンス番号または「数値」時間スケールを自由に使用できます。

txt <- textConnection("ATF v1.00 Date=23-01-2012; 
Time=10:38:56.421000; 
TracePoints=16384; 
TSamp=0.100000; 
TimeUnits=1.00000e-006; 
AmpToVolts=1.0000;
TraceMaxVolts=0.10000; 
PTime=0.00000; 
STime=0.00000; 
[TraceData] 
 4.82178e-004 
-1.37329e-003 
2.19116e-003 
4.38843e-003 
1.65405e-003 
3.36304e-003 
5.95093e-003 
2.19116e-003")

headers <- readLines(txt, n=9)
tracedat <- read.table(txt, header=TRUE)

closeAllConnections()

 headers
#-----------------
[1] "ATF v1.00 Date=23-01-2012; " "Time=10:38:56.421000; "     
[3] "TracePoints=16384; "         "TSamp=0.100000; "           
[5] "TimeUnits=1.00000e-006; "    "AmpToVolts=1.0000;"         
[7] "TraceMaxVolts=0.10000; "     "PTime=0.00000; "            
[9] "STime=0.00000; "      
# ----------      
tracedat
#-----------------
  X.TraceData.
1  0.000482178
2 -0.001373290
3  0.002191160
4  0.004388430
5  0.001654050
6  0.003363040
7  0.005950930
8  0.002191160
于 2012-02-04T12:51:12.207 に答える