Convert and compare - Date and Time

mengkoon007mengkoon007 Member Posts: 30 Contributor I
edited November 2018 in Help

Hi,

I have a dataset with 2 columns (Date and Time):

Date showing "1/1/2016", "23/4/2016".

Time showing "12:04:06 PM", "7:12:23 AM".

 

Question: I would like to show that any data with date (earlier than 3/2/2016) or time (earlier than 9:00:00 AM), a status will show "1" else show "2", I tried below but having error. May I know which area I have done wrongly and can the display be kept as original?

 

====

1. I import the data and noticed that the data type is polynominal for the date and time.

2. Thus,  I used the data transformation "Nominal to Date":

   a) For date, i convert to "date" data type with date format as "dd/mm/yyyy"

   b) For time, I convert to "time" data type with date format as "hh:mm:ss a"

3. I used generate attribute to do comparison.

     a) attribute name: status

     b) function expression: if(Date<"3/2/2016" || Time<"9:00:00 AM",1,2)

 

However, I received the following error:

error.gif

Tagged:

Answers

  • Thomas_OttThomas_Ott RapidMiner Certified Analyst, RapidMiner Certified Expert, Member Posts: 1,761   Unicorn

    I think you need to use the eval() function for this, which I don't think is available in the version you are using. It appears you are using v5.3?

    Pavithra_Rao
  • sshah8050sshah8050 Member Posts: 1 Contributor I
    Hi,

    I have three Attribute Day, Month, and Year. i want to get it like 22/12/2018. do we have any function for it?


  • IngoRMIngoRM Administrator, Moderator, Employee, RapidMiner Certified Analyst, RapidMiner Certified Expert, Community Manager, RMResearcher, Member, University Professor Posts: 1,733  RM Founder
    Hi,
    Sure, you can use a combination of the operators Generate Attributes and Nominal to Date.  Below is an example process showing this.
    Hope this helps,
    Ingo
    <?xml version="1.0" encoding="UTF-8"?><process version="9.2.001">
  • varunm1varunm1 Moderator, Member Posts: 1,115   Unicorn
    edited April 2019
    Hello @sshah8050

    You can concatenate these three attributes (attributes should be of type nominal) using Generate attributes operator into a single attribute and then parse it (if you need it as a date datatype)  into a date using Nominal to date operator. Sample XML code below.

    <?xml version="1.0" encoding="UTF-8"?><process version="9.2.001">
    <context>
    <input/>
    <output/>
    <macros/>
    </context>
    <operator activated="true" class="process" compatibility="9.2.001" expanded="true" name="Process">
    <parameter key="logverbosity" value="init"/>
    <parameter key="random_seed" value="2001"/>
    <parameter key="send_mail" value="never"/>
    <parameter key="notification_email" value=""/>
    <parameter key="process_duration_for_mail" value="30"/>
    <parameter key="encoding" value="SYSTEM"/>
    <process expanded="true">
    <operator activated="true" class="retrieve" compatibility="9.2.001" expanded="true" height="68" name="Retrieve DataSet" width="90" x="112" y="85">
    <parameter key="repository_entry" value="//Local Repository/RapidMIner/DataSet"/>
    </operator>
    <operator activated="true" class="generate_attributes" compatibility="9.2.001" expanded="true" height="82" name="Generate Attributes" width="90" x="447" y="85">
    <list key="function_descriptions">
    <parameter key="Date" value="concat(SURVEY,&quot;/&quot;,DOEID,&quot;/&quot;,WALLTYPE)"/>
    </list>
    <parameter key="keep_all" value="true"/>
    </operator>
    <operator activated="true" class="nominal_to_date" compatibility="9.2.001" expanded="true" height="82" name="Nominal to Date" width="90" x="648" y="85">
    <parameter key="attribute_name" value="Date"/>
    <parameter key="date_type" value="date"/>
    <parameter key="date_format" value="yyyy/MM/dd"/>
    <parameter key="time_zone" value="SYSTEM"/>
    <parameter key="locale" value="English (United States)"/>
    <parameter key="keep_old_attribute" value="false"/>
    </operator>
    <connect from_op="Retrieve DataSet" from_port="output" to_op="Generate Attributes" to_port="example set input"/>
    <connect from_op="Generate Attributes" from_port="example set output" to_op="Nominal to Date" to_port="example set input"/>
    <connect from_op="Nominal to Date" from_port="example set output" 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>

    Thanks 
    Regards,
    Varun
    https://www.varunmandalapu.com/

    Be Safe. Follow precautions and Maintain Social Distancing

    IngoRMhughesfleming68
  • PapadPapad Computer Science Student Member Posts: 68  Guru
    Hello @sshah8050
    For transformations and data types you can also use turbo prep and then go in your process.

    mschmitzIngoRM
Sign In or Register to comment.