RapidMiner

RapidMiner

Problem with the Execute-Script-Operator

Contributor

Problem with the Execute-Script-Operator

Hey,

I'm trying to generate an attribute Y in a moving sum from another attribute X:

Y(1) = X(1)

for i = 2 ... length(X) {

Y(i) = X(i) + Y(i-1)

}

The Result should look like this:









X Y
1 1
0 1
0 1
1 2
0 2


I do not found a possibility to do this in Rapidminer and therefore I used the Execute-Script-Operator. Unfortunately I have nearly no experience in Java/Groovy Smiley Sad The problem with my script is that it overwrites my input attribute X. I would be very grateful if someone have a look on the code below.

Greetings from Germany


import com.rapidminer.example.table.NumericalAttribute;
import com.rapidminer.tools.Ontology;

ExampleSet input= input[0];
Attributes all_attributes = input.getAttributes();
Attribute bool_attrib = all_attributes.get("X");
Attribute target = AttributeFactory.createAttribute("Y", Ontology.INTEGER)

target.setTableIndex(bool_attrib.getTableIndex());
all_attributes.addRegular(target);
ExampleTable bool_tbl = input.getExampleTable();

for (int i = 0; i < bool_tbl.size(); i++) {

DataRow tmp_DataRow = bool_tbl.getDataRow(i);
if (i == 0)
{
tmp_DataRow.set(target, tmp_DataRow.get(bool_attrib));
}

if (i != 0)
{
tmp_DataRow.set(target, tmp_DataRow.get(bool_attrib) + bool_tbl.getDataRow(i-1).get(target));
}
}
return (input);
1 REPLY
Super Contributor

Re: Problem with the Execute-Script-Operator

Hi,

what you need is the Integrate operator from the Value Series extension. This will get the job done without any coding Smiley Happy

Best regards,
Marius