我正在使用R 3.4.0和dplyr 0.5.0(我也使用R 3.3.3进行了测试,并且我有相同的错误)。dplyr group_by在变量上抛出错误不在函数中
过去我一直在使用这种类型的代码(甚至是昨天!),但由于某些原因,它今天会产生一个错误。
例如,我有5分钟的时间间隔的数据,我想总结15分钟。由于我不能group_by
日期时间POSIXlt
,我将变量转换为字符。但是,当我应用group_by
函数时,它会在原始DateTime POSIXlt
变量上创建一个错误,即使我在函数中使用了字符变量。
这里是一个重复的例子:
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(数据,unname商(VAR),降): 列 'DatesRound'有不受支持的类:POSIXlt,POSIXt
我也尝试使用转换:
d$DatesRoundChar <- strftime(as.POSIXct(d$DatesRound))
d$DatesRoundChar <- sapply(d$DatesRound, as.character)
但是我仍然有同样的错误。
有谁知道为什么它抛出一个错误,甚至没有在函数中的变量?我该如何解决它?
感谢您的回答之前删除 'DatesRound' 列。事实上,使用'as.POSIXct'工作得非常好,因为它允许以更少的代码完成我想要的工作。 –