3

data.tableは次のようなものです:

AccountNo    SubscriptionStart     SubscriptionEnd
11111        2010-10-12            2011-10-11
11112        2009-03-08            2010-03-08
11112        2010-03-08            2011-03-08
11112        2012-03-08            2013-03-08
11113        2011-08-21            2012-08-21

私が達成したいのは、後で更新されたアカウントにフラグを立てる新しい列を追加することだけです。

言い換えると、AccountNoで定義されたサブセット内のSubscriptionEnd <= max(SubscritionStart)の場合、GotRenewedはTRUEです。この例では、次のようになります。

AccountNo    SubscriptionStart     SubscriptionEnd    GotRenewed
11111        2010-10-12            2011-10-11         0
11112        2009-03-08            2010-03-07         1
11112        2010-03-08            2011-03-07         1
11112        2012-03-08            2013-03-07         0
11113        2011-08-21            2012-08-21         0

どうすればこれを達成できますか?私はあなたの助けに感謝します!

ありがとう。

4

1 に答える 1

2
dt[,GotRenewed := SubscriptionEnd <= max(SubscriptionStart), by=AccountNo]

   AccountNo SubscriptionStart SubscriptionEnd GotRenewed
1:     11111        2010-10-12      2011-10-11      FALSE
2:     11112        2009-03-08      2010-03-08       TRUE
3:     11112        2010-03-08      2011-03-08       TRUE
4:     11112        2012-03-08      2013-03-08      FALSE
5:     11113        2011-08-21      2012-08-21      FALSE

as.numeric本当に0/1が必要な場合に使用します。

于 2013-02-20T12:44:09.727 に答える