前のページに戻る

複数のテキストデータをTSV(Tab Separated Value)にまとめる


概要

吸収スペクトルなどの測定において、一定時間ごとに決められたデータポイント数をテキストデータで落とした場合に、一つのTSV(タブ区切り)形式のファイルにまとめることができる。
ただし、全ての時間において、同じデータ幅、同じデータポイント数でないと、多分、期待されるような動作は示さないと思います。
その辺までの面倒は見ないけれど、時と場合によっては多分役に立つことがある…といいな。

測定データだけでなくても、perlを用いて、テキストデータからTSVやCSV(camma separated value:カンマ区切り)形式への変換や、TSV、CSV形式でのデータ処理をしたい場合には、ヒントになるかも。
ちなみに、CSVでのソートはここのページが役に立つと思います。

ちなみに、1行目にファイル名が表示されるので、元ファイルを開かなくても大丈夫!


必要なファイル

ファイル名パーミッション注意
txt2tsv.pl755本体

使用法

コンソールで使用します。

# perl txt2tsv.pl -d [dirname]
で、指定したディレクトリ内のファイル(拡張子が.txt)を全て一つのtsvファイル(out.tsv)にまとめる。


補足


僕が使用しているUV-Visスペクトルの出力データは、1列目が波長、2列目が吸光度になっています。なので、1つ目のファイルからは波長、吸光度の両方を吸い取るけれど、2つ目以降のファイルからは、吸光度のみを吸い取るようにしています。
この挙動が嫌な場合は、適当に作り替えちゃってください。

あと、どのファイルから読み込むかはプログラム任せなので、処理後にエクセル等で並べ替えるか、プログラムを改良してください。

このプログラムでのデータ変換例を下に示します。



元データ1 (test/001.txt)元データ2 (test/002.txt)元データ3 (test/003.txt)
1
2
3
4
5
6
7
8
9
10
:
:
350.0  	0.090668  
350.5  	0.090487  
351.0  	0.090304  
351.5  	0.090238  
352.0  	0.090238  
352.5  	0.090238  
353.0  	0.090002  
353.5  	0.089644  
354.0  	0.089306  
354.5  	0.088950  
:
:
350.0  	0.090668  
350.5  	0.090487  
351.0  	0.090141  
351.5  	0.090074  
352.0  	0.090156  
352.5  	0.090156  
353.0  	0.089919  
353.5  	0.089562  
354.0  	0.089223  
354.5  	0.088867  
:
:
350.0  	0.089453  
350.5  	0.089268  
351.0  	0.088920  
351.5  	0.088850  
352.0  	0.088847  
352.5  	0.088844  
353.0  	0.088685  
353.5  	0.088242  
354.0  	0.087735  
354.5  	0.086880  
:
:
変換後データ( ./out.tsv)
1
2
3
4
5
6
7
8
9
10
11
:
	test/002.TXT	test/003.TXT	test/001.TXT	
350.0  	0.090668  	0.089453  	0.090668  	
350.5  	0.090487  	0.089268  	0.090487  	
351.0  	0.090141  	0.088920  	0.090304  	
351.5  	0.090074  	0.088850  	0.090238  	
352.0  	0.090156  	0.088847  	0.090238  	
352.5  	0.090156  	0.088844  	0.090238  	
353.0  	0.089919  	0.088685  	0.090002  	
353.5  	0.089562  	0.088242  	0.089644  	
354.0  	0.089223  	0.087735  	0.089306  	
354.5  	0.088867  	0.086880  	0.088950  	
:




前のページに戻る

(c)2004 Shin Iida