降水量データをステーションごとのファイルに分ける作業(2)

先週の続きをやりましょう

まず、buchashuju.rbを立ち上げます

中身は以下のように入力してください
file = "o:/学生個人用フォルダ/you/研究データ/buchashuju.txt" #配列データをファイルにして出力する
def output_data(data)
station_number = data[0][0]          #[0][0]最初の列はまた配列で、その中の最初の列
Dir.mkdir("EachStation")  unless File.exist?("EachStation")	#EachStationフォルダを作る,Dir はディレクトリとはファイルを分類・整理するための保管場所
out = open("EachStation/" + station_number + ".prc","w")      #out = openなら必ずout.closeする,open(file)なら大丈夫
#"EachStation/"というフォルダを作り,ファイル名はstation_number, "prc"という拡張子をファイルをつけ  る,  "w"は書きこみ
#データの全要素に対して以下のことをする
data.each do |station_number,year,month,day,precipitation|
   out.printf "%s%5s%3d%6.1f\n", station_number,year,month,day,precipitation      #printは書 式付の関数
  #%s文字列,%5s 5桁を指定する_先頭は空白(空白は後ろにする場合は%-5s),%3d 3桁の整数,%6.1fは小数点付き6ケタ、小数点後1ケタ
end
out.close
end
n_line = 0; rec_number = 0; number_before = 0; total_station = 0   #初期化
data = []                                        #各観測点全データの格納用配列
#ファイルをオーペンして、以下のことを実行
open(file).each do |line|
 # puts line
 # n_line = n_line + 1
 v = line.chop.split
 station_number = v[0] 
 
 if station_number != number_before
 total_station += 1
   if rec_number > 0
    output_data(data)
   p [station_number,rec_number]
   rec_number = 0; data = []
   #配列データをファイルにして出力する
   end
end
 number_before = station_number  
 n_line += 1 ; rec_number += 1
 data << v                  #配列データに1レコードを書く vという配列をdataに入れる
end              #最終データ観測点の配列データをファイルを出力
output_data(data)
puts n_line; 
puts total_station

では、コマンドプロンプトを立ち上げて下さい。
cd というコマンドで、「buchashuju.rb」が存在するディレクトリまで移動します。
ここで、
ruby buchashuju.rb
と打つと加工データを"station名.prc"という名前で「EachStation」というフォルダに保存してくれます。
コマンドは以下のようになります
降水量データをステーションごとのファイルに分ける作業はこれで終了です

次は各観測点のつき降水量と年降水量を求める

来週のメインですが、少しずつ進めていきましょう
まず、コマンドで
cat> get_month_anual.rb
と打つと新しいファイルをできました。
そこファイルで以下のように入力します
#各観測点のつき降水量と年降水量を求める
dir = "EachStation/"
Dir.foreach(dir) do |file|
 if /prc$/ =~ file
   puts file
 end
end
今回はここまでになります。
お疲れ様でした。

タグ:

+ タグ編集
  • タグ:
最終更新:2011年03月01日 19:12
添付ファイル