module Statsample::GGobi

Public Instance Methods

out(dataset,opt={}) click to toggle source
# File pkg/statsample-1.4.0/lib/statsample/converters.rb, line 289
                        def out(dataset,opt={})
                                require 'ostruct'
                                default_opt = {:dataname => "Default", :description=>"", :missing=>"NA"}
                                default_opt.merge! opt
                                carrier=OpenStruct.new
                                carrier.categorials=[]
                                carrier.conversions={}
                                variables_def=dataset.fields.collect{|k|
                                        variable_definition(carrier,dataset[k],k)
                                }.join("\n")
                                
                                indexes=carrier.categorials.inject({}) {|s,c|
                                        s[dataset.fields.index(c)]=c
                                        s
                                }
                                records=""
                                dataset.each_array {|c|
                                        indexes.each{|ik,iv|
                                                c[ik]=carrier.conversions[iv][c[ik]]
                                        }
                                        records << "<record>#{values_definition(c, default_opt[:missing])}</record>\n"
                                }
                                
out=<<EOC
<?xml version="1.0"?>
<!DOCTYPE ggobidata SYSTEM "ggobi.dtd">
<ggobidata count="1">
<data name="#{default_opt[:dataname]}">
<description>#{default_opt[:description]}</description>
<variables count="#{dataset.fields.size}">
#{variables_def}
</variables>
    <records count="#{dataset.cases}" missingValue="#{default_opt[:missing]}">
#{records}
</records>

</data>
</ggobidata>
EOC

out

                        end
values_definition(c,missing) click to toggle source
# File pkg/statsample-1.4.0/lib/statsample/converters.rb, line 332
def values_definition(c,missing)
  c.collect{|v|
    if v.nil?
      "#{missing}"
    elsif v.is_a? Numeric
      "#{v}"
    else
      "#{v.gsub(/\s+/,"_")}"
    end
  }.join(" ")
end
variable_definition(carrier,v,name,nickname=nil) click to toggle source

Outputs a string for a variable definition v = vector name = name of the variable nickname = nickname

# File pkg/statsample-1.4.0/lib/statsample/converters.rb, line 347
def variable_definition(carrier,v,name,nickname=nil)
        nickname = (nickname.nil? ? "" : "nickname=\"#{nickname}\"" )
        if v.type==:nominal or v.data.find {|d|  d.is_a? String }
                carrier.categorials.push(name)
                carrier.conversions[name]={}
                factors=v.factors
                out ="<categoricalvariable name=\"#{name}\" #{nickname}>\n"
                out << "<levels count=\"#{factors.size}\">\n"
                out << (1..factors.size).to_a.collect{|i|
                        carrier.conversions[name][factors[i-1]]=i
                        "<level value=\"#{i}\">#{v.labeling(factors[i-1])}</level>"
                }.join("\n")
                out << "</levels>\n</categoricalvariable>\n"
                out
        elsif v.data.find {|d| d.is_a? Float}
                "<realvariable name=\"#{name}\" #{nickname} />"
        else
                "<integervariable name=\"#{name}\" #{nickname} />"
        end
end
write(dataset,filename,opt={}) click to toggle source
# File pkg/statsample-1.4.0/lib/statsample/converters.rb, line 284
def write(dataset,filename,opt={})
  File.open(filename,"w") {|fp|
    fp.write(self.out(dataset,opt))
  }
end