2015-12-07 10 views
6

私は日付を差し引いています。次の例では、数値を計算した後にdifftimeの単位を変更する方法と、計算を行うときにunits = "xxx"を使用しない方法

bb 

FECHA_EFECTO_ESTADO FECHA_ANIVERSARIO_POLIZA 
9 2015-11-05 09:49:00    2015-11-05 
10 2015-11-05 09:51:00    2015-11-04 

です。列はposixctの日付値です。私が使用することができ、他の変数の違いで新しい変数を作成するには:デフォルトでは

library (dplyr) 
bb<-aa<-mutate(bb, day1=abs(FECHA_EFECTO_ESTADO-FECHA_ANIVERSARIO_POLIZA)) 
bb 
    FECHA_EFECTO_ESTADO FECHA_ANIVERSARIO_POLIZA   day1 
1 2015-11-05 09:49:00    2015-11-05 9.816667 hours 
2 2015-11-05 09:51:00    2015-11-04 33.850000 hours 

、単位(日、時間、秒)1日目の変数は、差の量に依存している場合。私は日中の違いを持っ​​ているしたい場合は、私が行うことができます:

bb<-mutate(bb, day2=abs (difftime(FECHA_EFECTO_ESTADO, FECHA_ANIVERSARIO_POLIZA, units="days"))) 
bb 
    FECHA_EFECTO_ESTADO FECHA_ANIVERSARIO_POLIZA   day1   day2 
1 2015-11-05 09:49:00    2015-11-05 9.816667 hours 0.4090278 days 
2 2015-11-05 09:51:00    2015-11-04 33.850000 hours 1.4104167 days 

は、計算を行った後に単位(この場合は日)を指定する方法はありますか?私は、例えば、時間の違いを持つことを好む分析をさらに下に見つけるかもしれません:
私はday1またはday2列の単位を事後的に変更できますか?
ありがとう

答えて

6

difftimeで返されるものは、クラス "difftime"のオブジェクトです。

他の機能には、difftimeのためのメソッドがあります。たとえば、数値として、時間数に変換する:

as.numeric(difftime("2015-12-07", "2015-12-05"), units="hours") 

[1] 48

をまたは、取得するために数週間:

as.numeric(difftime("2015-12-07", "2015-12-05"), units="weeks") 

[1] 0.2857143

また、POSIXctオブジェクトは実際には数字であることを覚えておくと便利です。彼らは‘1970-01-01 00:00.00 UTC’から経過した秒数を表します(グレゴリオ暦を前提とします)。

結果として、固定された持続時間の単位(すなわち、「月」のようなものではなく、一定ではない)を考え、それを使用して計算を行うことが便利なことが多い。たとえば、時間差が秒になると、それは他の定数に変換されます(技術的には、これらの中には非常に細かいスケールのバリエーションがありますが、ほとんどのアプリケーションではこれらの詳細に注意する必要はありません)。時間単位は分、時間、日、または週。

+1

をありがとう@rbatt。私は列 'day2'を時間に変更する方法を探していました。または 'day1'列を日付に変換します。あなたの答えを借りれば、私が 'bb $ day1 < - as.numeric(bb $ day1、units =" days ")を実行すると、変数day1の単位を時間から日に変更できることがわかりました。 –

+0

@MiguelRayonGonzalezこの回答が役に立つと分かった場合は、それを上書きすることを検討する必要があります。あなたの質問に答えた場合は、それを受け入れることを検討する必要があります。 – rbatt

2

今、私は私の例では、変数1日目の単位を変更するには、ことを実現している@rbattのおかげで、私はbb$day1<- as.numeric(bb$day1, units="days")

を行うことができ、これは日に単位を変更します:

FECHA_EFECTO_ESTADO FECHA_ANIVERSARIO_POLIZA   day1   day2 
9 2015-11-05 09:49:00    2015-11-05 9.816667 hours 0.4090278 days 
10 2015-11-05 09:51:00    2015-11-04 33.850000 hours 1.4104167 days 

bb$day1<- as.numeric(bb$day1, units="days") 

bb 

    FECHA_EFECTO_ESTADO FECHA_ANIVERSARIO_POLIZA  day1   day2 
9 2015-11-05 09:49:00    2015-11-05 0.4090278 0.4090278 days 
10 2015-11-05 09:51:00    2015-11-04 1.4104167 1.4104167 days