class Statsample::CSV
Constants
- CSV_klass
Public Instance Methods
read(filename, empty=[''],ignore_lines=0,csv_opts=Hash.new)
click to toggle source
Returns a Dataset based on a csv file
USE:
ds=Statsample::CSV.read("test_csv.csv")
# File lib/statsample/converter/csv.rb, line 34 def read(filename, empty=[''],ignore_lines=0,csv_opts=Hash.new) first_row=true fields=[] #fields_data={} ds=nil line_number=0 csv=CSV_klass.open(filename,'rb', csv_opts) csv.each do |row| line_number+=1 if(line_number<=ignore_lines) #puts "Skip line" next end row.collect!{|c| c.to_s } if first_row fields=extract_fields(row) ds=Statsample::Dataset.new(fields) first_row=false else rowa=process_row(row,empty) ds.add_case(rowa,false) end end convert_to_scale_and_date(ds,fields) ds.update_valid_data ds end
read19(filename,ignore_lines=0,csv_opts=Hash.new)
click to toggle source
# File lib/statsample/converter/csv.rb, line 12 def read19(filename,ignore_lines=0,csv_opts=Hash.new) #default first line is header csv_opts.merge!(:headers=>true, :header_converters => :symbol) csv = CSV_klass::Table.new(CSV_klass::read(filename,'r',csv_opts)) csv_headers = if csv_opts[:headers] csv.headers else #as in R, if no header we name the headers as V1,V2,V3,V4,.. 1.upto(csv.first.length).collect { |i| "V#{i}" } end #we invert row -> column. It means csv[0] is the first column and not row. Similar to R csv.by_col! thash = {} csv_headers.each_with_index do |header,idx| thash[header] = Statsample::Vector.new(csv[idx].drop(ignore_lines)) end Statsample::Dataset.new(thash) end
write(dataset,filename, convert_comma=false,*opts)
click to toggle source
Save a Dataset on a csv file
USE:
Statsample::CSV.write(ds,"test_csv.csv")
# File lib/statsample/converter/csv.rb, line 65 def write(dataset,filename, convert_comma=false,*opts) writer=CSV_klass.open(filename,'w',*opts) writer << dataset.fields dataset.each_array do|row| if(convert_comma) row.collect!{|v| v.to_s.gsub(".",",")} end writer << row end writer.close end