[解决]如何转置/去枢轴效用矩阵

ChikoChiko 成员职位:26Maven
2018年11月编辑 帮助
我如何把这样一个矩阵变成:Product5
客户ID Product1 Product2 Product3 Product4
1 1 0 3. 0 1
2 0 1 2 0 1
3. 1 0 0 0 4

变成一个新的转置后的像这样的:
CustomerID ProductID 数量
1 Product1 1
1 Product2 0
1 Product3 3.
1 Product4 0
1 Product5 1
2 Product1 0
2 Product2 1
2 Product3 2
2 Product4 0
2 Product5 1
3. Product1 1
3. Product2 0
3. Product3 0
3. Product4 0
3. Product5 4
谢谢你!如果之前有人问过这个问题,我很抱歉,但我的搜索无法带来我想要的结果。

答案

  • MartinLiebigMartinLiebig 管理员,版主,员工,RapidMiner认证分析师,RapidMiner认证专家,大学教授职位:3362年RM数据科学家
    你看过De-Pivot了吗?

    ~马丁
    - RapidMin乐鱼平台进入er数据科学服务主管
    德国多特蒙德
  • ChikoChiko 成员职位:26Maven
    嗨,马丁,

    是的,谢谢,我确实看了De-Pivot,据我所知,它未能将每个列名/属性名称转换为行实例。我也试过转置,但没有成功。我还可以补充说,在我的实际数据集中,产品属性范围从Product1....Product1001。

    问候,

    Chiko
  • MartinLiebigMartinLiebig 管理员,版主,员工,RapidMiner认证分析师,RapidMiner认证专家,大学教授职位:3362年RM数据科学家
    你好,

    看看这个过程。看起来它能满足你的要求。

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <过程version = " 7.0.001 " >
    > <上下文
    <输入/ >
    <输出/ >
    <宏/ >
    > < /上下文

    <过程扩展= " true " >

    <过程扩展= " true " >



    <过程扩展= " true " >


    < /操作符>



    < /操作符>

    <列出关键= " function_descriptions " >

    < / >列表
    < /操作符>


    <过程扩展= " true " >


    < /操作符>

    <列出关键= " key_attributes " / >
    < /操作符>


    < /操作符>






    > < /过程
    <过程扩展= " true " >


    < /操作符>




    > < /过程
    < /操作符>






    > < /过程
    < /操作符>


    < /操作符>





    < /操作符>




    > < /过程
    < /操作符>


    确保它们的顺序相同。可能不需要
    < /操作符>

    <列出关键= " attribute_name " >

    < / >列表

    < /操作符>






    < /操作符>








    使depivot生成的id更具可读性
    > < /过程
    < /操作符>
    > < /过程

    - RapidMin乐鱼平台进入er数据科学服务主管
    德国多特蒙德
  • ChikoChiko 成员职位:26Maven
    谢谢Martin,看了你的过程后,我对如何正确设置去枢轴运算符的参数有了一些深入的了解。然而,由于某种原因,我没有将属性名作为实例,而是得到了一个1-n的串行标识符,其中n是属性的数量,如果我不关心属性名,这就可以了。但是,在业务域中,每个列/属性都是唯一产品代码(UPC)或SKU(在美国),SKU的形式为1002635、4567889、1282739等。因此,尽管我简化了Product1-Product5中的问题,但实际上我得到的是sku,而不是字符串字面量Product1-Product5。因此,在我的新去枢轴操作中,我可以创建行,但不是像在列标题中那样选择sku,而是使用序列号。我希望我说的有意义……

    简而言之,在上面的过程中,您使用Product_作为串行前缀的地方是我卡住的地方,我只需要按原样读取列标头(SKU),而不是生成串行,然后使用正则表达式。在我的例子中,我必须逐字获取列名。

    问候,

    Chiko
  • MartinLiebigMartinLiebig 管理员,版主,员工,RapidMiner认证分析师,RapidMiner认证专家,大学教授职位:3362年RM数据科学家
    因此,您需要的是一个表,将属性名称映射到它的位置,并重新连接它。

    这应该行得通:

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <过程version = " 7.0.001 " >
    > <上下文
    <输入/ >
    <输出/ >
    <宏/ >
    > < /上下文

    <过程扩展= " true " >

    <过程扩展= " true " >



    <过程扩展= " true " >


    < /操作符>



    < /操作符>

    <列出关键= " function_descriptions " >

    < / >列表
    < /操作符>


    <过程扩展= " true " >


    < /操作符>

    <列出关键= " key_attributes " / >
    < /操作符>


    < /操作符>






    > < /过程
    <过程扩展= " true " >


    < /操作符>




    > < /过程
    < /操作符>






    > < /过程
    < /操作符>


    < /操作符>





    < /操作符>




    > < /过程
    < /操作符>


    确保它们的顺序相同。可能不需要
    < /操作符>





    < /操作符>



    <列出关键= " rename_additional_attributes " / >
    < /操作符>

    <列出关键= " attribute_name " >

    < / >列表

    < /操作符>


    <列出关键= " set_additional_roles " / >
    < /操作符>



    <列出关键= " key_attributes " >

    < / >列表
    < /操作符>














    生成一个包含标题位置和名称的表格
    > < /过程
    < /操作符>
    > < /过程

    - RapidMin乐鱼平台进入er数据科学服务主管
    德国多特蒙德
  • ChikoChiko 成员职位:26Maven
    嗨,马丁,

    你真是个天才!映射表发挥了作用。

    问候,

    Chiko
登录注册置评。