RapidMiner

How to multiply many columns

Wisdom logo Registration now open for RapidMiner Wisdom Americas | New Orleans | October 10-12, 2018   Learn More
Highlighted
Contributor II olgakulesza2
Contributor II

How to multiply many columns

Hello,

I'm new at rapid miner. I have a problem with multiplying values from columns. 

Let's imagine I have 4 columns: A,B,C,D. I want to multiply each column B,C,D with A. 

I know I can make it by using 'Generate Attributes', but I have about 100 columns co it is a little bit hard to do it. What's more I would like to have new values of that columns, not the new additional columns. 

For example I have: 

      B         C        D                                                                   

3       1           2         1                                                                  

     2           2         1                                                                  

5       3           1         2       

and what I want to have is:       

A        B         C        D   

       3         6         3

4         8         8         4

5        15       5         10


I would be grateful for any advice.

 

2 REPLIES
Unicorn
Unicorn

Re: How to multiply many columns

Just use "Generate Attributes" inside a "Loop Attributes" and you only have to configure it once and RapidMiner will do all the rest of the work for you.  And if you want to overwrite your original attributes, just use the same attribute name with a macro inside the Loop Attributes (if you wanted a new name you could just use the macro and add "_new" to the end).

 

Brian T., Lindon Ventures - www.lindonventures.com
Analytics Consulting and Training by Certified RapidMiner Experts
Unicorn
Unicorn

Re: How to multiply many columns

Here's a process example based on Telecontar's solution.

 

<?xml version="1.0" encoding="UTF-8"?><process version="8.2.000">
  <context>
    <input/>
    <output/>
    <macros/>
  </context>
  <operator activated="true" class="process" compatibility="8.2.000" expanded="true" name="Process">
    <process expanded="true">
      <operator activated="true" breakpoints="after" class="operator_toolbox:create_exampleset" compatibility="1.0.000" expanded="true" height="68" name="Create ExampleSet" width="90" x="45" y="34">
        <list key="function_descriptions">
          <parameter key="A" value="rand()"/>
          <parameter key="B" value="rand()"/>
          <parameter key="C" value="rand()"/>
          <parameter key="D" value="rand()"/>
          <parameter key="E" value="rand()"/>
        </list>
        <list key="numeric_series_configuration"/>
        <list key="date_series_configuration"/>
        <list key="date_series_configuration (interval)"/>
      </operator>
      <operator activated="true" class="concurrency:loop_attributes" compatibility="8.2.000" expanded="true" height="82" name="Loop Attributes" width="90" x="246" y="34">
        <parameter key="attribute_filter_type" value="single"/>
        <parameter key="attribute" value="A"/>
        <parameter key="invert_selection" value="true"/>
        <parameter key="reuse_results" value="true"/>
        <process expanded="true">
          <operator activated="true" class="generate_attributes" compatibility="8.2.000" expanded="true" height="82" name="Generate Attributes" width="90" x="179" y="34">
            <list key="function_descriptions">
              <parameter key="%{loop_attribute}" value="A * eval(%{loop_attribute})"/>
            </list>
          </operator>
          <connect from_port="input 1" to_op="Generate Attributes" to_port="example set input"/>
          <connect from_op="Generate Attributes" from_port="example set output" to_port="output 1"/>
          <portSpacing port="source_input 1" spacing="0"/>
          <portSpacing port="source_input 2" spacing="0"/>
          <portSpacing port="sink_output 1" spacing="0"/>
          <portSpacing port="sink_output 2" spacing="0"/>
        </process>
      </operator>
      <connect from_op="Create ExampleSet" from_port="output" to_op="Loop Attributes" to_port="input 1"/>
      <connect from_op="Loop Attributes" 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>
 
-- Training, Consulting, Sales in China, Hong Kong & Taiwan --
www.RapidMinerChina.com