データセットを週ごとに集計できるように、2 つの時間変数 "Interaction2" と "Start2" を週形式に変換しました。「Interaction2」と「Start2」の差である 3 番目の変数「Weeks」を作成します。次のコマンドを使用して、時間変数を (年、月、日ではなく) 年、月、週の標準の日付形式に変換しました。
d1$Interaction2<-format(d1$Interaction,'%Y-%m-%U')
d1$Start2<-format(d1$Start,'%Y-%m-%U')
「Interaction2」と「Start2」の結果は正しくフォーマットされているように見えますが、文字変数です。差分を取得するために difftime 関数を使用しましたが、結果は 10 進数です。
d1$Weeks<-difftime(d1$Interaction2,d1$Start2,units='weeks')
結果は整数であるべきではありませんか? difftime コマンドは、最後の 2 桁を週ではなく日として解釈していますか? 「Interaction2」週と「Start2」週の差を週数として取得するにはどうすればよいですか?
structure(list(Interaction2 = c("2015-02-06", "2015-02-08", "2015-03-09",
"2015-03-11", "2015-03-12"), Start2 = c("1995-04-16", "1995-04-16",
"1995-04-16", "1995-04-16", "1995-04-16"), Weeks = structure(c(1033.72023809524,
1034.00595238095, 1038.14285714286, 1038.42857142857, 1038.57142857143
), units = "weeks", class = "difftime")), .Names = c("Interaction2",
"Start2", "Weeks"), row.names = c(NA, 5L), class = "data.frame")
また、差分コマンドを実行する前に、strptime を使用して文字変数を変換しようとしました。
d1$Interaction3<-strptime(as.character(d1$Interaction2),"%Y%m%U")
d1$Start3<-strptime(as.character(d1$Start2),"%Y%m%U")
d1$Weeks<-difftime(d1$Interaction3,d1$Start3,units='weeks')
しかし、これにより、「Interaction3」、「Start3」、および「Weeks」変数の NA が得られました。
structure(list(Interaction2 = c("2015-02-06", "2015-02-08", "2015-03-09",
"2015-03-11", "2015-03-12"), Start2 = c("1995-04-16", "1995-04-16",
"1995-04-16", "1995-04-16", "1995-04-16"), Weeks = structure(c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_), units = "weeks", class = "difftime"),
Start3 = structure(list(sec = c(NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_), min = c(NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_), hour = c(NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_), mday = c(NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_), mon = c(NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_), year = c(NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_), wday = c(NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_), yday = c(NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_), isdst = c(-1L,
-1L, -1L, -1L, -1L), zone = c("", "", "", "", ""), gmtoff = c(NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_)), .Names = c("sec",
"min", "hour", "mday", "mon", "year", "wday", "yday", "isdst",
"zone", "gmtoff"), class = c("POSIXlt", "POSIXt")), Interaction3 = structure(list(
sec = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_
), min = c(NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_), hour = c(NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_), mday = c(NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_), mon = c(NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_),
year = c(NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_), wday = c(NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_), yday = c(NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_), isdst = c(-1L,
-1L, -1L, -1L, -1L), zone = c("", "", "", "", ""), gmtoff = c(NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_)), .Names = c("sec",
"min", "hour", "mday", "mon", "year", "wday", "yday", "isdst",
"zone", "gmtoff"), class = c("POSIXlt", "POSIXt"))), .Names = c("Interaction2",
"Start2", "Weeks", "Start3", "Interaction3"), row.names = c(NA,
5L), class = "data.frame")