我的表格如下所示:
ID City Code
"1005AE" "Oakland" "Value1"
"1006BR" "St.Louis" "Value2"
"102AC" "Miami" "Value1"
"103AE" "Denver" "Value3"
我想将Code
个示例/值转置/转换为列属性,如下所示:
ID City Value1 Value2 Value3
"1005" "Oakland" 1 0 0
"1006" "St.Louis" 0 1 0
"1012" "Miami" 1 0 0
"1030" "Denver" 0 0 1
请注意,ID
字段是编码为字符串的数值,因为Rapidminer无法导入bigint
数据类型。所以这是一个我需要解决的单独问题 - 但我的重点是数据的转动或转置。
我通读了下面列出的一些不同的Stackoverflow帖子。他们建议使用Pivot或Transpose操作。我尝试了这两个,但由于某种原因,我得到一个巨大的表,创建City
作为虚拟变量,或只是属性列的一些子集。
How can I set the rows to be the attributes and columns the samples in rapidminer?
Rapidminer data transpose equivalent to melt in R
任何建议都将不胜感激。
答案 0 :(得分:1)
在透视中,group attribute
参数指示将有多少行,index attribute
参数指示新属性名称的最后部分是什么。每个新属性的名称的第一部分由任何其他既不是组也不是索引的常规属性驱动,单元格中的值是在原始示例集中找到的值。
这意味着您必须创建一个常量值为1的新属性;为此使用Generate Attributes
。将ID属性的角色设置为ID,使其不再是常规属性;为此使用Set Role
。在Pivot
运算符中,将group attribute
设置为City
,将index attribute
设置为Code
。最终结果接近你想要的。最后的步骤是,首先将缺失值设置为0;使用Replace Missing Values
进行此操作,然后重命名属性以匹配您想要的属性;请使用Rename
。
由于数据透视操作丢失了ID,您必须将结果重新连接到原始文件。
你可以在这里找到一个有用的例子http://rapidminernotes.blogspot.co.uk/2011/05/worked-example-using-pivot-operator.html