4

R 3.4.0 と dplyr 0.5.0 を使用しています (R 3.3.3 を使用してテストしたところ、同じエラーが発生しました)。

私はこの次のタイプのコードを過去 (昨日も!) 定期的に使用していましたが、何らかの理由で今日エラーが発生します。

たとえば、15 分ごとに要約したい 5 分間隔のデータがあります。group_byDateTimeができないのでPOSIXlt、変数を文字に変換します。ただし、関数を適用すると、group_by関数で文字変数を使用していても、元の DateTimePOSIXlt変数でエラーが発生します。

再現可能な例を次に示します。

z <- seq(ISOdatetime(2017,01,01, 00,00,00), ISOdatetime(2017,02,28,23,45,00), by="5 min")
q <- rnorm(16990, mean=120, sd=75)

d<- data.frame("Dates"=z, "values"=q)

# Round the time to the nearest 15min
d$DatesRound <- as.POSIXlt(round(as.double(d$Dates)/(15*60))*(15*60),origin=(as.POSIXlt('1970-01-01')))

# Transform into character
d$DatesRoundChar <- as.character(d$DatesRound)

d2 <-
  d %>%
  group_by(DatesRoundChar)%>%
  summarise(total=sum(values))

そして、ここに私が持っているエラーがあります:

grouped_df_impl(data, unname(vars), drop) のエラー: 列 'DatesRound' にサポートされていないクラスがあります: POSIXlt、POSIXt

を使用して変換も試みました:

d$DatesRoundChar <- strftime(as.POSIXct(d$DatesRound))
d$DatesRoundChar <- sapply(d$DatesRound, as.character)

しかし、それでも同じエラーが発生します。

関数に含まれていない変数でエラーがスローされる理由を知っている人はいますか? どうすれば修正できますか?

4

1 に答える 1