How can i do an if that must meet two conditions, if there is no "and" function?

cdaponte
cdaponte New Altair Community Member
edited November 2024 in Community Q&A
I´m using the operator Generate Attributes and i want to generate an attribute from 2 existing ones, and the problem is that i have to use an if expression but it must meet two conditions. As far as i´m concerned there is not a function like "AND" o yes?  

Thank you!
Tagged:

Best Answers

  • tftemme
    tftemme New Altair Community Member
    Answer ✓
    Hi @cdaponte

    The problem with the second conditions in the last 2 if conditions is, that you have put the Producto Genérico into "". So RapidMiner takes "Producto Genérico) as a normal String (and not using it as the attribute) and compare it to the other String ("PV"). This obviously results always in false. So although the syntax of the expression is correct (thats the only thing RM can check), the condition will never be fulfilled. 

    Just change "Producto Genérico" to [Producto Genérico] and your if conditions should work.

    Best regards,
    Fabian

Answers

  • sgenzer
    sgenzer
    Altair Employee
    hi @cdaponte yes you can use || for OR and && for AND

    Scott
  • cdaponte
    cdaponte New Altair Community Member
    Yes! But it doesn´t work for me, i don´t know why. Maybe because one attribute that i use in the if is an attribute that i create before?
  • varunm1
    varunm1 New Altair Community Member
    edited July 2019
    @cdaponte do you mean, you are creating an attribute in the generate attribute and using it in the same generate attribute operator?

    Can you provide your XML code for this process? It is available in XML window (View --> Show Panel --> XML)
  • cdaponte
    cdaponte New Altair Community Member
    if(contains(Tercerizado,"WEISFELD"),"ESTUDIO JUDICIAL",
    if(contains(Tercerizado,"QUIEBRA"),"ESTUDIO JUDICIAL",
    if(contains(Tercerizado,"Weisfeld"),"ESTUDIO JUDICIAL",
    if(contains(Tercerizado,"LLECI"),"ESTUDIO JUDICIAL",
    if(contains(Tercerizado,"SAGUES"),"ESTUDIO JUDICIAL",
    if(contains(Tercerizado,"HADADD"),"ESTUDIO JUDICIAL",
    if(equals(Tercerizado,"JUDICIAL"),"ESTUDIO JUDICIAL", 
    if((Tercerizado=="MORA TARDIA") && ("Producto Genérico"== "CBU- NO BARRIDO"),"MORA TARDIA-CBU-NO BARRIDO",
    if((Tercerizado=="MORA TARDIA") && ("Producto Genérico"=="PV"), "MORA TARDIA-PV","ESTUDIO EXTRAJUDICIAL")))))))))

    It appears that the expression is correct, but the results are not the expected, the 2 last if does not work. "Producto Genérico" is an attribute that i previously created. 
  • tftemme
    tftemme New Altair Community Member
    Answer ✓
    Hi @cdaponte

    The problem with the second conditions in the last 2 if conditions is, that you have put the Producto Genérico into "". So RapidMiner takes "Producto Genérico) as a normal String (and not using it as the attribute) and compare it to the other String ("PV"). This obviously results always in false. So although the syntax of the expression is correct (thats the only thing RM can check), the condition will never be fulfilled. 

    Just change "Producto Genérico" to [Producto Genérico] and your if conditions should work.

    Best regards,
    Fabian