我正在使用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'工作得非常好,因爲它允許以更少的代碼完成我想要的工作。 –