【问题标题】:Rapidminer count total occurrence and sort by dateRapidminer 计数总出现次数并按日期排序
【发布时间】:2021-05-10 20:28:23
【问题描述】:

我有这样的 rapidminer 示例集,

ID   Issue       Exp  
100  9/8/2020    11/8/2020
100  8/5/2019    9/5/2019
101  6/3/2020    10/1/2020
102  8/15/2020   12/12/2020

我想添加一个新列,该列将通过添加数字来计算 ID 的出现次数,并按最早日期排序,这样我们就知道在什​​么日期我有多少计数。

这样的输出,

ID   Issue       Exp         Count  
100  8/5/2019    9/5/2019    1
100  9/8/2020    11/8/2020   2
101  6/3/2020    10/1/2020   1
102  8/15/2020   12/12/2020  1

但是当我按 ID 汇总并进行计​​数时,它只会计算总数并显示相同 ID。因此,对于 ID 100,它两次都显示为 2,因为它只是两次添加数字。

例如,对于 2019 年的 ID 100,我们只有 1 个发布日期,因此计数为 1,当我们在 2020 年再次找到 ID 100 时,计数将为 2。因此,按日期排序也很重要,因为它会帮助我们以正确的顺序查找出现的 ID。

感谢任何帮助。

谢谢。

【问题讨论】:

    标签: rapidminer


    【解决方案1】:

    一种方法是使用Loop Values运算符循环遍历ID运算符的所有可能值,使用该值过滤示例集(已经排序),从这个过滤集中生成一个新的递增id最后将所有过滤后的示例重新附加在一起。

    这是执行此操作的过程和相应的 XML。

    <?xml version="1.0" encoding="UTF-8"?><process version="9.9.000">
      <context>
        <input/>
        <output/>
        <macros/>
      </context>
      <operator activated="true" class="process" compatibility="9.9.000" 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.9.000" expanded="true" height="68" name="Retrieve occById" width="90" x="45" y="34">
            <parameter key="repository_entry" value="//Local Repository/data/occById"/>
          </operator>
          <operator activated="true" class="blending:sort" compatibility="9.9.000" expanded="true" height="82" name="Sort" width="90" x="179" y="34">
            <list key="sort_by">
              <parameter key="ID" value="ascending"/>
              <parameter key="Issue" value="ascending"/>
            </list>
          </operator>
          <operator activated="true" class="concurrency:loop_values" compatibility="9.9.000" expanded="true" height="82" name="Loop Values" width="90" x="313" y="34">
            <parameter key="attribute" value="ID"/>
            <parameter key="iteration_macro" value="loop_value"/>
            <parameter key="reuse_results" value="false"/>
            <parameter key="enable_parallel_execution" value="true"/>
            <process expanded="true">
              <operator activated="true" class="filter_examples" compatibility="9.9.000" expanded="true" height="103" name="Filter Examples" width="90" x="112" y="34">
                <parameter key="parameter_string" value="ID=%{loop_value}"/>
                <parameter key="parameter_expression" value=""/>
                <parameter key="condition_class" value="attribute_value_filter"/>
                <parameter key="invert_filter" value="false"/>
                <list key="filters_list">
                  <parameter key="filters_entry_key" value="ID.eq.%{loop_value}"/>
                </list>
                <parameter key="filters_logic_and" value="true"/>
                <parameter key="filters_check_metadata" value="true"/>
              </operator>
              <operator activated="true" class="generate_id" compatibility="9.9.000" expanded="true" height="82" name="Generate ID" width="90" x="313" y="34">
                <parameter key="create_nominal_ids" value="false"/>
                <parameter key="offset" value="0"/>
              </operator>
              <connect from_port="input 1" to_op="Filter Examples" to_port="example set input"/>
              <connect from_op="Filter Examples" from_port="example set output" to_op="Generate ID" to_port="example set input"/>
              <connect from_op="Generate ID" 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>
          <operator activated="true" class="append" compatibility="9.9.000" expanded="true" height="82" name="Append" width="90" x="447" y="34">
            <parameter key="datamanagement" value="double_array"/>
            <parameter key="data_management" value="auto"/>
            <parameter key="merge_type" value="all"/>
          </operator>
          <connect from_op="Retrieve occById" from_port="output" to_op="Sort" to_port="example set input"/>
          <connect from_op="Sort" from_port="example set output" to_op="Loop Values" to_port="input 1"/>
          <connect from_op="Loop Values" from_port="output 1" to_op="Append" to_port="example set 1"/>
          <connect from_op="Append" from_port="merged set" 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>
    

    输入数据是手工制作的,并以名称 occById 存储在本地存储库中 - 如下所示。

    结果如下。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-31
      • 2011-05-16
      • 1970-01-01
      • 1970-01-01
      • 2014-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多