数据框中的灵活计算

时间:2013-07-30 20:20:34

标签: r dataframe

我对 R 有一点问题,我的技能有些限制。 我想在数据框中进行两次基于前一行的计算。 第一个是计数变量,另外我想计算当前行和上一行之间的差异。

我认为澄清问题的最简单方法是一个小例子:

想象一下下表,它只包含两列。 user是客户编号,time是特定用户的交易时间。

现在我想创建示例表中指定的两个新列:

  1. 计数器变量count,它只计算用户的交易,表示实际用户交易的实际数量。

  2. 变量diff (time [s]),它是当前事务与前一个事务之间的时差[以秒为单位]。因此类似于:time [i] - time [i-1],但每个新用户的计算必须从零开始;显然,不能为每个用户的第一笔交易计算时差。

  3. 我试图通过循环来解决这个问题,但是表非常大并且完整数据集上的计算只是不想结束。

    user    time    count   diff(time[s])
    A   10:00:00    1   
    A   10:30:00    2   1.800
    A   12:00:00    3   5.400
    A   13:00:00    4   3.600
    B   14:00:00    1   
    C   15:00:00    1   
    C   16:00:00    2   3.600
    C   17:00:00    3   3.600
    

1 个答案:

答案 0 :(得分:0)

我会使用plyr包来完成它,这使得数据争用时的生活变得更加容易。有很多方法可以在基础R中执行此操作和其他转换,但它是一堆混乱的不同函数和不一致的接口。

library(plyr)
ddply(df, .(user), transform, count=seq_len(time), diff=c(0, diff(time)))