【发布时间】:2026-01-27 22:35:01
【问题描述】:
我正在尝试使用 Leada 提供的数据集计算人们骑自行车的频率。
代码如下:
library(dplyr)
setAs("character", "POSIXlt", function(from) strptime(from, format = "%m/%d/%y %H:%M"))
d <- read.csv("http://mandrillapp.com/track/click/30315607/s3-us-west-1.amazonaws.com?p=eyJzIjoiemxlVjNUREczQ2l5UFVPeEFCalNUdmlDYTgwIiwidiI6MSwicCI6IntcInVcIjozMDMxNTYwNyxcInZcIjoxLFwidXJsXCI6XCJodHRwczpcXFwvXFxcL3MzLXVzLXdlc3QtMS5hbWF6b25hd3MuY29tXFxcL2RhdGF5ZWFyXFxcL2Jpa2VfdHJpcF9kYXRhLmNzdlwiLFwiaWRcIjpcImEyODNiNjMzOWJkOTQxMGM5ZjlkYzE0MmQ0NDQ5YmU4XCIsXCJ1cmxfaWRzXCI6W1wiMTVlYzMzNWM1NDRlMTM1ZDI0YjAwODE4ZjI5YTdkMmFkZjU2NWQ2MVwiXX0ifQ",
colClasses = c("numeric", "numeric", "POSIXlt", "factor", "numeric", "POSIXlt", "factor", "numeric", "numeric", "factor", "character"),
stringsAsFactors = T)
names(d)[9] <- "BikeNo"
d <- tbl_df(d)
d <- d %>% mutate(Weekday = factor(weekdays(Start.Date)))
d %>% group_by(Weekday)
%>% summarise(Total = n())
%>% select(Weekday, Total)
这很奇怪,但 dplyr 不想按 Weekday 对数据进行分组:
错误:列“Start.Date”的类型不受支持
为什么它关心我按因素分组的 Start.Date 列? 您可以在本地运行代码来重现错误:它会自动下载数据。
附:我正在使用 dplyr 版本:dplyr_0.3.0.2
【问题讨论】:
-
是的,我可以。你是对的,如果我将 Start.Date 和 End.Date 转换为 POSIXct dplyr 工作正常!哇,这对我来说是一种奇怪的行为。您知道强制 strptime 创建 POSIXct 而不是 POSIXlt 的方法吗?我不想在读取文件后有 2 个单独的行来转换数据。
-
使用
as.POSIXct而不是strptime。另一方面,也许您也可以将它们保留为character。至少在我看来,您显示的代码并不真正取决于POSIX。 -
请先阅读
?as.POSIXct,尤其是format参数。 -
@Sergei,我想你现在已经足够回答你自己的问题了......