首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每天数POSIXlt次数

每天数POSIXlt次数
EN

Stack Overflow用户
提问于 2014-06-16 02:22:31
回答 3查看 367关注 0票数 1

在一个数据框架中,我有大量的POSIXlt时间,我试图看看每天发生多少次这样的活动(在这个例子中,是骑自行车)。最好的方法是什么?

日期看起来是这样的:

代码语言:javascript
复制
> rides$start.fmtd[1:25]
 [1] "2014-01-01 00:06:00" "2014-01-01 00:11:00" "2014-01-01 00:12:00"
 [4] "2014-01-01 00:14:00" "2014-01-01 00:15:00" "2014-01-01 00:16:00"
 [7] "2014-01-01 00:16:00" "2014-01-01 00:19:00" "2014-01-01 00:20:00"
[10] "2014-01-01 00:20:00"

dput(head())给了我以下内容:

代码语言:javascript
复制
> dput(head(rides$start.fmtd))
structure(list(sec = c(0, 0, 0, 0, 0, 0), min = c(6L, 11L, 12L, 
14L, 15L, 16L), hour = c(0L, 0L, 0L, 0L, 0L, 0L), mday = c(1L, 
1L, 1L, 1L, 1L, 1L), mon = c(0L, 0L, 0L, 0L, 0L, 0L), year = c(114L, 
114L, 114L, 114L, 114L, 114L), wday = c(3L, 3L, 3L, 3L, 3L, 3L
), yday = c(0L, 0L, 0L, 0L, 0L, 0L), isdst = c(0L, 0L, 0L, 0L, 
0L, 0L)), .Names = c("sec", "min", "hour", "mday", "mon", "year", 
"wday", "yday", "isdst"), class = c("POSIXlt", "POSIXt"))

这个特定的框架大约有300,000个纪念活动(它是国会大厦自行车共享数据集,包含系统中的每一次自行车旅行,每季度打包)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-16 06:22:41

代码语言:javascript
复制
dates <- as.POSIXlt(runif(10, 0, 60 * 60 * 24 * 7), origin = Sys.Date())
dates
## [1] "2014-06-16 03:36:13 PDT" "2014-06-15 22:39:41 PDT"
## [3] "2014-06-19 12:25:11 PDT" "2014-06-17 09:31:45 PDT"
## [5] "2014-06-20 02:20:00 PDT" "2014-06-18 04:36:48 PDT"
## [7] "2014-06-19 17:33:35 PDT" "2014-06-21 15:38:24 PDT"
## [9] "2014-06-17 08:50:45 PDT" "2014-06-20 03:36:38 PDT"

class(dates)
## [1] "POSIXlt" "POSIXt"

table(as.Date(dates))
## 2014-06-15 2014-06-16 2014-06-17 2014-06-18 2014-06-19 2014-06-20 2014-06-21
##          1          1          2          1          2          2          1
票数 2
EN

Stack Overflow用户

发布于 2014-06-16 02:31:57

POSIXlt有一个yday属性,您可以使用aggregatebytable之类的方法来进行计数。

例如,假设在数据帧count中有一组d中的日纪念数,其中包含列date。如果您的数据不超过一年,您可以单独使用yday

代码语言:javascript
复制
aggregate(count ~ date$yday, data=d, FUN=sum)

如果它跨度超过一年(或者只是为了安全起见),也可以包括该年(任何乘数都大于366):

代码语言:javascript
复制
aggregate(count ~ I(1000*date$year + date$yday), data=d, FUN=sum)
票数 2
EN

Stack Overflow用户

发布于 2014-06-16 02:29:27

如果有带有日期和时间的值,则可以将其格式化为只有日期,并在这些值上使用table()来获取计数。

代码语言:javascript
复制
#sample data
set.seed(15)
randomdates <- structure(runif(30, 1357016400, 1359608400), 
    class=c("POSIXct", "POSIXt"), tzone="")

现在计算每个日期的值

代码语言:javascript
复制
table(strftime(randomdates, "%Y-%m-%d"))

唯一的缺点是,table()将日期转换为字符向量。您可以将它们转换回

代码语言:javascript
复制
tbl<-table(strftime(randomdates, "%Y-%m-%d"))
as.POSIXct(names(tbl))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24235919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档