【发布时间】:2015-10-16 03:16:17
【问题描述】:
我想附加一列,指示m+1-th col 之间的数据差异。 n-th 行和m-th 列。 n+1-th 行。
数据格式为df,
set.seed(2)
user.list = c('A','B','C')
t = seq(as.Date("2015/1/1"), as.Date("2015/12/31"), 'days')
st = sort(sample(t, 10))
et = st+30
df = data.frame(
user=sort(sample(user.list, 10, replace=T)),
start=st,
due=et
)
预期的输出应该是
user start due td
1 A 2015-02-16 2015-03-18 -16
2 A 2015-03-02 2015-04-01 -23
3 A 2015-03-09 2015-04-08 70
4 A 2015-06-17 2015-07-17 197*
5 B 2015-07-15 2015-08-14 -17
6 B 2015-07-28 2015-08-27 17
7 B 2015-09-13 2015-10-13 109*
8 C 2015-10-26 2015-11-25 11
9 C 2015-12-06 2016-01-05 -29
10 C 2015-12-07 2016-01-06 24*
td表示时差,以天为单位。
例如,对于用户A,-16 来自 2015-03-02 和 2015-03-18 之间的差异; -23 是 2015-03-09 和 2015-04-01 之间的差值等。* 的数字是每个用户的最后一行,或者是从固定日期 2016-01-30 之间的差值得出的和 2015-07-17(对于用户 A)。
如果没有dlply(划分为用户列表)、for和if(扫描每一行,看看它是否是用户的最后一个),如何通过有效的方式解决?
【问题讨论】:
标签: r date dataframe date-difference