降水量データをステーションごとのファイルに分ける作業(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