データフレームに2つの日付変数WK_BEGIN_DTとWK_END_DT、たとえばDATがあります。これらは両方とも文字形式です。私は次のものを取得しようとしています。ここではSASコマンドを使用していますが、Rでも同じことをしたいと思います。
私のデータは次のようになります。
var1 Begin_DT End_DT
1 02/07/2012 02/11/2012
2 04/09/2012 04/15/2012
3 04/17/2012 04/23/2012
4 06/21/2012 06/30/2012
5 07/15/2012 07/29/2012
SASコード:
DATA DAT;
set DAT;
## PART 1: ##
WK_BEGIN_DT = BEGIN_DT - 2 ;
WK_END_DT = WK_BEGIN_DT + 6 ;
## PART 2: ##
if WEEKDAY(WK_END_DT) ^= 6 then do ;
if weekday(WK_END_DT) = 7 then WK_END_DT = WK_END_DT + 6 ;
else WK_END_DT = WK_END_DT + 6 - weekday(WK_END_DT) ;
end ;
パート1の問題については、私は試しました
DAT$new.dt <- DAT$wk_end_dt - as.difftime(2, unit="days")
計算後、結果は次のようになります。
var1 Begin_DT End_DT Wk_Begin_DT WK_END_DT
1 02/07/2012 02/11/2012 02/05/2012 02/12/2012
2 04/09/2012 04/15/2012 04/07/2012 04/15/2012
3 04/17/2012 04/23/2012 04/15/2012 04/23/2012
4 06/21/2012 06/30/2012 06/19/2012 06/25/2012
5 07/15/2012 07/29/2012 07/13/2012 07/21/2012
しかし、次のエラーが表示されます。
Error in `$<-.data.frame`(`*tmp*`, "new.dt", value = numeric(0)) :
replacement has 0 rows, data has 2354
パート1とパート2の両方の結果を取得する方法を教えてもらえますか?
ありがとうございました。よろしく、