我对 R 有一点问题,我的技能有些限制。 我想在数据框中进行两次基于前一行的计算。 第一个是计数变量,另外我想计算当前行和上一行之间的差异。
我认为澄清问题的最简单方法是一个小例子:
想象一下下表,它只包含两列。 user
是客户编号,time
是特定用户的交易时间。
现在我想创建示例表中指定的两个新列:
计数器变量count
,它只计算用户的交易,表示实际用户交易的实际数量。
变量diff (time [s])
,它是当前事务与前一个事务之间的时差[以秒为单位]。因此类似于:time [i] - time [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
答案 0 :(得分:0)
我会使用plyr
包来完成它,这使得数据争用时的生活变得更加容易。有很多方法可以在基础R中执行此操作和其他转换,但它是一堆混乱的不同函数和不一致的接口。
library(plyr)
ddply(df, .(user), transform, count=seq_len(time), diff=c(0, diff(time)))