Beispiel #1
0
std::string MissingValues::to_string(void) const
{
    std::ostringstream buffer;

    const size_t missing_values_number = get_missing_values_number();

    buffer << "Missing values object\n"
           << "Instances number: " << instances_number << "\n"
           << "Variables number: " << variables_number << "\n"
           << "Missing values number: " << missing_values_number << "\n";

    for(size_t i = 0; i < missing_values_number; i++)
    {
        buffer << "Missing value " << i+1 << ":\n"
               << "Instance index: " << items[i].instance_index << "\n"
               << "Variable index: " << items[i].variable_index << "\n";
    }

    buffer << "Scrubbing method: " << write_scrubbing_method() << "\n";

    buffer << "Display: " << display << "\n";

    return(buffer.str());
}
Beispiel #2
0
tinyxml2::XMLDocument* MissingValues::to_XML(void) const
{
    tinyxml2::XMLDocument* document = new tinyxml2::XMLDocument;

    std::ostringstream buffer;

    // MissingValues

    tinyxml2::XMLElement* missing_values_element = document->NewElement("MissingValues");

    document->InsertFirstChild(missing_values_element);

    tinyxml2::XMLElement* element = NULL;
    tinyxml2::XMLText* text = NULL;

    const size_t missing_values_number = get_missing_values_number();

    // Instances number
    {
        element = document->NewElement("InstancesNumber");
        missing_values_element->LinkEndChild(element);

        buffer.str("");
        buffer << instances_number;

        text = document->NewText(buffer.str().c_str());
        element->LinkEndChild(text);
    }

    // Variables number
    {
        element = document->NewElement("VariablesNumber");
        missing_values_element->LinkEndChild(element);

        buffer.str("");
        buffer << variables_number;

        text = document->NewText(buffer.str().c_str());
        element->LinkEndChild(text);
    }

    // Scrubbing method
    {
        element = document->NewElement("ScrubbingMethod");
        missing_values_element->LinkEndChild(element);

        text = document->NewText(write_scrubbing_method().c_str());
        element->LinkEndChild(text);
    }

    // Missing values number
    {
        element = document->NewElement("MissingValuesNumber");
        missing_values_element->LinkEndChild(element);

        buffer.str("");
        buffer << missing_values_number;

        text = document->NewText(buffer.str().c_str());
        element->LinkEndChild(text);
    }

    for(size_t i = 0; i < missing_values_number; i++)
    {
        element = document->NewElement("Item");
        element->SetAttribute("Index", (unsigned)i+1);
        missing_values_element->LinkEndChild(element);

        // Instance index

        tinyxml2::XMLElement* instance_index_element = document->NewElement("InstanceIndex");
        element->LinkEndChild(instance_index_element);

        buffer.str("");
        buffer << items[i].instance_index;

        text = document->NewText(buffer.str().c_str());
        instance_index_element->LinkEndChild(text);

        // Variable index

        tinyxml2::XMLElement* variable_index_element = document->NewElement("VariableIndex");
        element->LinkEndChild(variable_index_element);

        buffer.str("");
        buffer << items[i].variable_index;

        text = document->NewText(buffer.str().c_str());
        variable_index_element->LinkEndChild(text);
    }

    // Display
    {
        element = document->NewElement("Display");
        missing_values_element->LinkEndChild(element);

        buffer.str("");
        buffer << display;

        text = document->NewText(buffer.str().c_str());
        element->LinkEndChild(text);
    }

    return(document);
}
void MissingValues::write_XML(tinyxml2::XMLPrinter& file_stream) const
{
    std::ostringstream buffer;

    const size_t missing_values_number = get_missing_values_number();

    file_stream.OpenElement("MissingValues");

    // Instances number

    file_stream.OpenElement("InstancesNumber");

    buffer.str("");
    buffer << instances_number;

    file_stream.PushText(buffer.str().c_str());

    file_stream.CloseElement();

    // Variables number

    file_stream.OpenElement("VariablesNumber");

    buffer.str("");
    buffer << variables_number;

    file_stream.PushText(buffer.str().c_str());

    file_stream.CloseElement();

    // Scrubbing method

    file_stream.OpenElement("ScrubbingMethod");

    file_stream.PushText(write_scrubbing_method().c_str());

    file_stream.CloseElement();

    // Missing values number

    file_stream.OpenElement("MissingValuesNumber");

    buffer.str("");
    buffer << missing_values_number;

    file_stream.PushText(buffer.str().c_str());

    file_stream.CloseElement();


    if(missing_values_number <= 0)
    {
        file_stream.CloseElement();

        return;
    }

    std::string instances_indices_text;
    std::string variables_indices_text;

    for(size_t i = 0; i < missing_values_number; i++)
    {
        // Instance index

        const size_t instance_index = items[i].instance_index + 1;

        instances_indices_text.append(number_to_string(instance_index));

        if(i != missing_values_number - 1)
        {
            instances_indices_text.append(" ");
        }


        // Variable index

        const size_t variable_index = items[i].variable_index + 1;

        variables_indices_text.append(number_to_string(variable_index));

        if(i != missing_values_number - 1)
        {
            variables_indices_text.append(" ");
        }
    }

    // Instances indices

    file_stream.OpenElement("InstancesIndices");

    file_stream.PushText(instances_indices_text.c_str());

    file_stream.CloseElement();

    // Variables indices

    file_stream.OpenElement("VariablesIndices");

    file_stream.PushText(variables_indices_text.c_str());

    file_stream.CloseElement();


    file_stream.CloseElement();
}
tinyxml2::XMLDocument* MissingValues::to_XML(void) const
{
    tinyxml2::XMLDocument* document = new tinyxml2::XMLDocument;

    std::ostringstream buffer;

    // MissingValues

    tinyxml2::XMLElement* missing_values_element = document->NewElement("MissingValues");

    document->InsertFirstChild(missing_values_element);

    tinyxml2::XMLElement* element = NULL;
    tinyxml2::XMLText* text = NULL;

    const size_t missing_values_number = get_missing_values_number();

    // Instances number
    {
        element = document->NewElement("InstancesNumber");
        missing_values_element->LinkEndChild(element);

        buffer.str("");
        buffer << instances_number;

        text = document->NewText(buffer.str().c_str());
        element->LinkEndChild(text);
    }

    // Variables number
    {
        element = document->NewElement("VariablesNumber");
        missing_values_element->LinkEndChild(element);

        buffer.str("");
        buffer << variables_number;

        text = document->NewText(buffer.str().c_str());
        element->LinkEndChild(text);
    }

    // Scrubbing method
    {
        element = document->NewElement("ScrubbingMethod");
        missing_values_element->LinkEndChild(element);

        text = document->NewText(write_scrubbing_method().c_str());
        element->LinkEndChild(text);
    }

    // Missing values number
    {
        element = document->NewElement("MissingValuesNumber");
        missing_values_element->LinkEndChild(element);

        buffer.str("");
        buffer << missing_values_number;

        text = document->NewText(buffer.str().c_str());
        element->LinkEndChild(text);
    }



    if(missing_values_number > 0)
    {
        tinyxml2::XMLElement* instances_indices_element = document->NewElement("InstancesIndices");
        missing_values_element->LinkEndChild(instances_indices_element);

        tinyxml2::XMLElement* variables_indices_element = document->NewElement("VariablesIndices");
        missing_values_element->LinkEndChild(variables_indices_element);

        std::string instances_indices_text;
        std::string variables_indices_text;

        for(size_t i = 0; i < missing_values_number; i++)
        {
            // Instance index

            const size_t instance_index = items[i].instance_index + 1;

            instances_indices_text.append(number_to_string(instance_index));

            if(i != missing_values_number - 1)
            {
                instances_indices_text.append(" ");
            }

            // Variable index

            const size_t variable_index = items[i].variable_index + 1;

            variables_indices_text.append(number_to_string(variable_index));

            if(i != missing_values_number - 1)
            {
                variables_indices_text.append(" ");
            }
        }

        // Insert instances indices

        text = document->NewText(instances_indices_text.c_str());
        instances_indices_element->LinkEndChild(text);

        // Insert variables indices

        text = document->NewText(variables_indices_text.c_str());
        variables_indices_element->LinkEndChild(text);
    }

    /*
    for(size_t i = 0; i < missing_values_number; i++)
    {
        element = document->NewElement("Item");
        element->SetAttribute("Index", (unsigned)i+1);
        missing_values_element->LinkEndChild(element);

        // Instance index

        tinyxml2::XMLElement* instance_index_element = document->NewElement("InstanceIndex");
        element->LinkEndChild(instance_index_element);

        buffer.str("");
        buffer << items[i].instance_index+1;

        text = document->NewText(buffer.str().c_str());
        instance_index_element->LinkEndChild(text);

        // Variable index

        tinyxml2::XMLElement* variable_index_element = document->NewElement("VariableIndex");
        element->LinkEndChild(variable_index_element);

        buffer.str("");
        buffer << items[i].variable_index+1;

        text = document->NewText(buffer.str().c_str());
        variable_index_element->LinkEndChild(text);
    }
*/

    // Display
//    {
//        element = document->NewElement("Display");
//        missing_values_element->LinkEndChild(element);

//        buffer.str("");
//        buffer << display;

//        text = document->NewText(buffer.str().c_str());
//        element->LinkEndChild(text);
//    }

    return(document);
}