m+1
番目の列のデータの違いを示す列を追加したいと思います。- 番目のn
行とm
- 番目の列の。n+1
番目の行の。
データ形式は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
時差を日単位で表示します。たとえば、 user の場合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
(各行をスキャンして、それがユーザーの最後の行であるかどうかを確認する)ことなく、効率的な方法でどのように解決できますか?