Class: Statsample::CSV

Inherits:
SpreadsheetBase show all
Defined in:
lib/statsample/converter/csv.rb

Constant Summary collapse

CSV_klass =
::CSV

Class Method Summary collapse

Methods inherited from SpreadsheetBase

convert_to_scale_and_date, extract_fields, process_row

Class Method Details

.read(filename, empty = [''], ignore_lines = 0, fs = nil, rs = nil) ⇒ Object

Returns a Dataset based on a csv file

USE:

ds=Statsample::CSV.read("test_csv.csv")


17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/statsample/converter/csv.rb', line 17

def read(filename, empty=[''],ignore_lines=0,fs=nil,rs=nil)        
  first_row=true
  fields=[]
  fields_data={}
  ds=nil
  line_number=0
  opts={}
  opts[:col_sep]=fs unless fs.nil?
  opts[:row_sep]=rs unless rs.nil?
  csv=CSV_klass.open(filename,'r',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

.write(dataset, filename, convert_comma = false, *opts) ⇒ Object

Save a Dataset on a csv file

USE:

Statsample::CSV.write(ds,"test_csv.csv")


51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/statsample/converter/csv.rb', line 51

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