2

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(各行をスキャンして、それがユーザーの最後の行であるかどうかを確認する)ことなく、効率的な方法でどのように解決できますか?

4

1 に答える 1