0

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

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

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

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

  1. 计数器变量count,简单统计用户的交易次数,表示实际用户的实际交易次数。

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

我试图用一个循环来解决这个问题,但是表格非常大,对完整数据集的计算只是不想结束。

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
4

1 回答 1

0

我会使用这个plyr包来做这件事,这让数据处理变得更加容易。在基础 R 中有很多方法可以做到这一点和其他转换,但它是一堆具有不一致接口的不同功能。

library(plyr)
ddply(df, .(user), transform, count=seq_len(time), diff=c(0, diff(time)))
于 2013-07-30T20:24:46.957 回答