Получение данных из двух разных листов Excel в Rapidminer

Я новичок в рапидмайнере. Я работаю над проектом, в котором мне нужно работать с несколькими листами Excel, скажем, A и B. Есть некоторые данные, которые присутствуют на листе A, и я должен использовать эти данные и выполнять над ним арифметические операции и некоторые данные из листа B и вывести результаты на лист B.

Я использую оператор чтения excel для извлечения листа excel. И я использую атрибуты генерации для выполнения арифметических операций. Я обнаружил, что оператор цикла используется, когда мы имеем дело с несколькими листами. Но для этого требуется, чтобы все имена столбцов на всех листах были одинаковыми. В моем случае их нет. И что я должен делать? Как использовать несколько листов, если они не имеют одинаковых имен столбцов? Спасибо


person pooja    schedule 17.02.2016    source источник


Ответы (2)


Оператор Select Subprocess позволяет выбрать другой подпроцесс на основе значения его параметра select which. В вашем операторе Loop у вас, вероятно, есть макрос, содержащий лист, который вы импортируете. Этот макрос можно использовать как параметр для select which. Внутри оператора Select Subprocess будет выполняться соответствующий подпроцесс. Очевидно, что вы должны правильно получить содержимое каждого подпроцесса.

person Andrew Chisholm    schedule 18.02.2016

С оператором RapidMiner Read Excel есть небольшая хитрость, о которой вы могли не знать.

Если вы не настроите его, а вместо этого просто укажете на нужный файл Excel, он попытается импортировать все с листа в номер листа, несмотря на импортированный диапазон ячеек A1.

Используйте это с оператором цикла, чтобы ввести данные и сохранить их как отдельные наборы примеров в репозитории. (Вы также можете использовать Select Subprocess, как упоминал Эндрю, для выполнения Generate Attributes только на Sheet1)

Вот пример процесса.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<process version="7.0.000">
  <context>
    <input/>
    <output/>
    <macros/>
  </context>
  <operator activated="true" class="process" compatibility="7.0.000" expanded="true" name="Process">
    <process expanded="true">
      <operator activated="true" class="loop" compatibility="7.0.000" expanded="true" height="82" name="Loop" width="90" x="112" y="85">
        <parameter key="set_iteration_macro" value="true"/>
        <parameter key="macro_name" value="sheetNum"/>
        <parameter key="iterations" value="2"/>
        <process expanded="true">
          <operator activated="true" class="read_excel" compatibility="7.0.000" expanded="true" height="68" name="Read Excel" width="90" x="112" y="85">
            <parameter key="excel_file" value="C:\Users\user\myExcel.xlsx"/>
            <parameter key="sheet_number" value="%{sheetNum}"/>
            <list key="annotations"/>
            <list key="data_set_meta_data_information"/>
            <description align="center" color="orange" colored="true" width="126">Read each sheetNum. Note this operator is not configured with attribute names it reads these from the Excel doc.</description>
          </operator>
          <operator activated="true" class="store" compatibility="7.0.000" expanded="true" height="68" name="Store" width="90" x="313" y="85">
            <parameter key="repository_entry" value="//Local Repository/data/myExcel_sheet%{sheetNum}"/>
            <description align="center" color="orange" colored="true" width="126">Store each sheetNum as a separate ExampleSet in the repository.</description>
          </operator>
          <connect from_op="Read Excel" from_port="output" to_op="Store" to_port="input"/>
          <connect from_op="Store" from_port="through" to_port="output 1"/>
          <portSpacing port="source_input 1" spacing="0"/>
          <portSpacing port="sink_output 1" spacing="0"/>
          <portSpacing port="sink_output 2" spacing="0"/>
        </process>
        <description align="center" color="orange" colored="true" width="126">Loop 2 times for each sheetNum</description>
      </operator>
      <connect from_op="Loop" from_port="output 1" to_port="result 1"/>
      <portSpacing port="source_input 1" spacing="0"/>
      <portSpacing port="sink_result 1" spacing="0"/>
      <portSpacing port="sink_result 2" spacing="0"/>
    </process>
  </operator>
</process>
person John Heath - RapidMiner China    schedule 23.02.2016