これは基本的にRuby経由で巨大なCSVファイルの情報を検索しようとしています。 )、私はUnixタイムスタンプを適切なTimeオブジェクトに変換し、それらをソートして#selectでフィルタリングしました。私は、この特定の時間範囲(start_date、end_dateで表される)を指定してpurchase_amtに関する情報を検索しようとしています。純粋なルビー:#selectでcsvの日付をフィルタリングしましたが、その日付範囲に基づいて別の列を取得したい
現在、巨大なcsvでフィルタリングされた時間の配列しかありませんが、どのようにしてcsvでpurchase_amtを取得するために自分のコードを使用できますか?
Unix_time purchase_amt
1352948920 12.40
require 'csv'
require 'date'
start_date = DateTime.rfc3339('2014-06-22T00:00:00Z').to_time.to_i
end_date = DateTime.rfc3339('2014-07-22T00:00:00Z').to_time.to_i
csv = CSV.parse('sample_data.csv', headers: true, encoding: 'ISO-8859-1')
csv.each do |row|
if (row['created_at'] >= start_date && row['created_at'] <= end_date)
final_arry<< row
end
end
puts csv
私は前方にまっすぐであるCSV [「purchase_amt」]でpurchase_amtにアクセスしたいと思っていますが、Imは、私は、その後の対処方法を疑問に思いますこの大規模な配列と私は前に行ったフィルタリング作業を適用する... – cristodagama
1つの解決策は、csvの最初の反復で列の値(Unix_time)を変更することができる...すべての列は、 start_dateまたはend_dateのどちらに該当するかを確認して、['purchase_amt']行を取得することができます。 – Abhinay
あなたは明確にすることができますか?多分私に例を教えてください? – cristodagama