2017-05-30 22 views
0

開始日と終了日を2つの異なる間隔で特定しようとしています。ループの日付間隔と日数を計算します

各区間は、次のように定義されます

  • 最小:私のDFの分日付。
  • 最大:最大日付マイナス私が書いた単純な二ラグのためのいくつかの固定ラグ(1,2,3週)

df <- sample(seq(as.Date('1999/01/01'), as.Date('2000/01/01'), by="day"), 150) 
dates <- as.data.frame(df) 


end_1week <- max(df) - weeks(1) 
min <- min(df) 


end_2week <- max(df) - weeks(2) 
min <- min(df) 

print(paste('Sample 1 starts from',min,'to', end_1week)) 
print(paste('Sample 2 starts from',min,'to', end_2week)) 

はどのようにして、任意の数のために、この手順をベクトル化することができます遅れの? のは、定義しましょう:

lags <- (1,2,4,8,12) 

、各サンプルの日数を加算し、各サンプルの開始日と終了日を印刷?

+0

を探している出力を使用すると、再現性の例のデータを提供することができますを与えるかもしれませんか? – www

+0

いくつかのランダムデータで編集しました@ycw – xxxvinxxx

+0

週は定義されていません –

答えて

1

これは、あなたが

library(lubridate) 

df <- sample(seq(as.Date('1999/01/01'), as.Date('2000/01/01'), by="day"), 150) 
dates <- as.data.frame(df) 

lags <- c(1,2,4,8,12) 
min <- min(df) 
end_weeks <- max(df) - weeks(lags) 

print(paste('Sample',lags,'starts from',min,'to',end_weeks)) 
+0

'weeks'は' lubridate'関数です。それはあなたが毎週の間隔で日付を操作することを可能にします。 rubridateには、数秒、分、時間、日など、これに類似した関数も含まれています。 –

+0

良い点@ycw forループで処理されるのではなく、ベクトル化されたバージョンになるように答えを更新しました。 –

関連する問題