How to detect attribute type

CharlieFirpo
CharlieFirpo New Altair Community Member
edited November 2024 in Community Q&A
Dear all!

How can I detect the type of an attribute? I have a Branch operator. If the type of an attribute is numerical then the IF should be run, if the attribute is nominal then the ELSE.

Thank you!!!
Tagged:

Answers

  • CharlieFirpo
    CharlieFirpo New Altair Community Member
    One way can be use a Numerical to Nominal operator. It works well even if the type of the input attribute is nominal. The RapidMiner functions like 'contains, str, finds...' does not work if the type of one of argument is wrong. And unfortunatelly there is no an 'isnum' function :(

    After the Numerical to Nominal operator one should use a Generate Attribute operator that generates eg. the isNum attribute with this function:
    finds(%{macro_of_attribute_name},"^[0-9]+$") It returns true only if the value of the given attribute consists of only numbers.
    And at the Branch operator the condition type should be 'attribute_value_filter', and the condition value 'isNum=true'.

    It is not difficult but maybe there is a simliest way to do this. Is there?

    Nice day!
  • lukki
    lukki New Altair Community Member
    Here my solution:

    I used the "Set Macro"-operator to define a Macro with the name "number" and value "0".
    I used the "Handle Exception"-operator. In the "Catch"-branch I put the "Set Macros"-operatur and give my macro "number" the value "1". In the "Try"-branch I did a "Loop attributes"-operator und used at the option "attribute filter type" the value "value_type" and the option "value type" I gave the value "numeric".
    In the "Loop attributes"-operator I put a "Set macros"-operator and gave my macro "number" the value "2".

    So if my dataset have numeric attributes, the macro "number" have the value "2", if not the macro "number" have the value "1".