2016-07-09 12 views
0

私は観測値の範囲が1974-10-01から2014-30-09までの列のデータフレームを取得しました。最初の期間(つまり1974-10-01)からの日数を指定するデータフレームに新しい列(「日」)を作成したいと思います。特定の日付以降の日数をカウントします。

私はすでにコードを持っていて、本当に似たようなデータフレームには完全に機能しましたが、なぜこの2番目のデータフレームでは機能しないのか分かりません。

1)コードは以下の通りです:

library(lubridate) 
ref_date <- dmy("01-10-1974") 
df$Day <- as.numeric(difftime(df$Date, ref_date)) 

2)私のデータフレームの最初の行は、次のとおりです。

 Code Area  Date Height 
1 2001 551.4 1975-04-01 120.209 
2 2001 551.4 1976-01-06 158.699 
3 2001 551.4 1977-01-21 128.289 
4 2001 551.4 1978-02-23 198.254 
5 2001 551.4 1979-07-31 131.811 
[....] 

3)私は私のコードを得るどのような(1)以下れます:

 Code Area  Date  Day Height 
1 2001 551.4 1975-04-01 15724800 120.209 
2 2001 551.4 1976-01-06 39916800 158.699 
3 2001 551.4 1977-01-21 72835200 128.289 
4 2001 551.4 1978-02-23 107222400 198.254 
5 2001 551.4 1979-07-31 152409600 131.811 
[....] 

私は2時間以上を費やして何故手掛かりがないのだろうと思いました。

提案がありますか?

答えて

0

あなたは、以下の例のような何かを探しています:

df <- data.frame(Date = c("1975-04-01")) 
> df 
     Date 
1 1975-04-01 

df$new_col <- as.Date(as.character(df$Date), format="%Y-%m-%d") - as.Date(as.character("1974-10-01"), format="%Y-%m-%d") 
> df 
     Date new_col 
1 1975-04-01 182 days 
> 
+0

ありがとうございました。 –

0

別のオプション

difftime(ref_date,df$Date,units = "days") 
0

あなたのコードは限り日付が文字列であるとして動作しているようです。

library(lubridate) 
ref_date <- dmy("01-10-1974") 

df<- data.frame(Code=2001, Area=551.4, Date=c("1975-04-01","1976-01-06","1977-01-21","1978-02-23","1979-07-31"), Height=c(120.209, 158.699, 128.289, 198.254, 131.811)) 

df$Day <- as.numeric(difftime(df$Date, ref_date)) 
関連する問題