从前一个减去每个下一个列值?

时间:2016-07-13 11:27:09

标签: sql sql-server rapidminer

我有一个数据集,在某种程度上,下一个奇异数据会添加到前一行数据的一行,而每列的数据,这意味着, ID为1的行是原始的纯数据,但是例如ID 10的行已经添加了前9个数据集中的数据...

我现在想要的是获取每个不同项目的原始纯数据,这意味着对于每个ID,我如何减去来自ID,10的所有数据?对于ID 9等等,我必须减去前一个的那些......

我想在SQL Server或Rapidminer中这样做,我正在使用这些工具,任何想法? 这是一个样本:

ID  col1 col2 col3 
1    12   2     3
2    15   5     5
3    20   8     8

所以ID为3的物品的真实正确数据不是20,8,8,它是(20-15),(8-5),(8-5)所以它的5,3,3 ...... 除了第一个项目之前的每个项目都减去之前的项目。

1 12 2 3

3 个答案:

答案 0 :(得分:1)

尝试使用lag series运算符,它肯定会有效!要获得此运营商,您应该从RM市场安装系列扩展。

此运算符的作用 - 他复制所选属性并将示例集的每一行推送到一个点,因此ID为1的行将获得ID为2的副本(您还可以指定滞后值)。之后,您可以使用Generate Attributes从另一个值中减去一个值。

答案 1 :(得分:0)

我认为lag()是您问题的答案:

select (case when id = 1 then col
             else col - lag(col) over (order by id)
        end)

但是,样本数据会澄清这个问题。

答案 2 :(得分:0)

在RapidMiner中,系列扩展中包含Differentiate运算符(默认情况下不安装,需要从RapidMiner Marketplace下载)。这可用于计算相邻示例中属性之间的差异。